2011-12-27 48 views
2

這是我的代碼的一部分:如何添加資源作爲數據網格中的綁定?

<ribbon:RibbonWindow x:Class="MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:sys="clr-namespace:System;assembly=mscorlib" 
    xmlns:ribbon="clr-namespace:Microsoft.Windows.Controls.Ribbon;assembly=RibbonControlsLibrary" 
    x:Name="RibbonWindow" 
Width="850" Height="600"> 

    <Window.Resources> 
     <ResourceDictionary> 
      <sys:Int32 x:Key="Timestep">0</sys:Int32> 

      <CollectionViewSource x:Key="cvsNodes" /> 
     </ResourceDictionary> 
    </Window.Resources> 

    ... 

    <DataGrid x:Name="NodeDataGrid" Grid.Row="1" AutoGenerateColumns="False" AlternatingRowBackground="Linen" IsReadOnly="True" ItemsSource="{Binding Source={StaticResource cvsNodes}}"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Header="Node" Binding="{Binding Path=ID}" SortDirection="Ascending" /> 
      <DataGridTextColumn Header="X" Binding="{Binding Path=Position.X, StringFormat=\{0:F\}}" /> 
      <DataGridTextColumn Header="Y" Binding="{Binding Path=Position.Y, StringFormat=\{0:F\}}" /> 
      <DataGridTextColumn Header="Z" Binding="{Binding Path=Position.Z, StringFormat=\{0:F\}}" /> 
      <DataGridTextColumn Header="Pressure (s)" Binding="{Binding Path=Results[{DynamicResource Timestep}].PressureSupply, StringFormat=\{0:F\}}" /> 
     </DataGrid.Columns> 
    </DataGrid> 

    ... 
</ribbon:RibbonWindow> 

一切正常,除了這行:

<DataGridTextColumn Header="Pressure (s)" Binding="{Binding Path=Results[{DynamicResource Timestep}].PressureSupply, StringFormat=\{0:F\}}" /> 

然而,這個工作(我換成{DynamicResource時間步} 0):

<DataGridTextColumn Header="Pressure (s)" Binding="{Binding Path=Results[0].PressureSupply, StringFormat=\{0:F\}}" /> 

我該如何做到這一點?

回答

1

據我所知,索引器必須是編譯時常量,所以沒有辦法做你想做的事情。解決方法將取決於您的確切要求,但您可以使用具有衆所周知名稱的屬性,根據當前時間步驟公開正確的結果。

+0

感謝您的回答,我按照您所說的解決方法進行了工作。它看起來並不像我想要的那樣好,但它完成了工作。 – Ragowit 2011-12-30 10:14:15

相關問題