2013-07-14 53 views
0

我有一個簡單的DataGrid,看起來像這樣支持DataGrid中動態性能

<DataGrid ItemsSource="{Binding GridList}"> 
    <DataGrid.RowStyle> 
     <Style TargetType="{x:Type DataGridRow}"> 
     <Setter Property="Height" Value="Auto" /> 
     <Setter Property="Background" Value="Black" /> 
     </Style> 
    </DataGrid.RowStyle> 
    <DataGrid.Columns> 
     <DataGridTemplateColumn> 
     <DataGridTemplateColumn.CellTemplate> 
      <DataTemplate> 
       <Grid> 
        <Grid.ColumnDefinitions> 
        <ColumnDefinition /> 
        </Grid.ColumnDefinitions> 
        <TextBlock Grid.Column="0" Text="{Binding ID}" /> 
       </Grid> 
      </DataTemplate> 
     </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 
    </DataGrid.Columns> 
</DataGrid> 

但現在我想補充另一個TextBlockDataTemplate看起來像這樣

<TextBlock Grid.Column="1" Text="{Binding Values["Entity1"]}" /> 

或者

<TextBlock Grid.Column="1" Text="{Binding Values.Entity1}" /> 

但我無法得到它的工作,其實我不知道如何創建L AST之一,所以它是去工作

的列表中選擇型號看起來像這樣

class ListModel { 
    public int ID {get;set;} 
    public IDictionary<string, string> Values {get;set;} 
} 

當然,我可以代替的IDictionary到別的東西,但什麼?

回答

0

其實我想通了,我更改的ListModel到

class ListModel { 
    public string this[string key] { get{return _values[key];} set{_values[key]=value;}} 
    public int ID{get;set;} 
    public IDictionary<string,string> _values = new Dictionary<string,string>(); 
} 

而XAML來

<TextBlock Grid.Column="1" Text="{Binding [Entity1]}" />