【问题标题】:Support for dynamic properties in DataGrid支持 DataGrid 中的动态属性
【发布时间】:2013-07-14 17:43:12
【问题描述】:

我有一个简单的 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>

但现在我想在DataTemplate 中添加另一个TextBlock,看起来像这样

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

或者

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

但我无法让它工作,实际上我不知道如何创建最后一个所以它会工作

List 的模型如下所示

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

当然,我可以将 IDictionary 替换为其他内容,但是什么?

【问题讨论】:

    标签: c# datagrid dynamic-properties


    【解决方案1】:

    其实我想通了,我把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]}" />
    

    【讨论】:

      猜你喜欢
      • 2011-06-10
      • 1970-01-01
      • 2014-04-28
      • 1970-01-01
      • 2012-07-26
      • 2019-04-02
      • 1970-01-01
      • 1970-01-01
      • 2012-12-05
      相关资源
      最近更新 更多