一列上的数据网格显示图标

时间:2014-02-09 13:34:57

标签: c# wpf xaml mvvm

IM使用在R​​T期间填充数据的数据网格(我使用mvvm)。 我将数据网格绑定到观察者集合,该集合在RT期间使用值进行更新。

其中一个字段是isKey。如果此值为true,我想显示一些键的图标。 我怎么能这样做?

我需要在键为真时添加图标。

这是我的代码

模型

  public bool IsKey { get; set; }
        public string Column2 { get; set; }
        public string Column3 { get; set; }



  {
        public ViewModel()
            {
            this.Items = new List<MyClass>();
            //row 1:
            this.Items.Add(new MyClass { IsKey= true,Column2 = "aaaa",Column3 = "ddfa",Column4 = "fddsfas",Column5 = "dfadsfas"});
            //row 2:
            this.Items.Add(new MyClass { IsKey = false ,Column2 = "aaaa",Column3 = "ddfa",Column4 = "fddsfas",Column5 = "dfadsfas"});
            }

xaml

        </DataGridTemplateColumn>
        <DataGridTextColumn Binding="{Binding isKey}" Header="2" Width="*" />
        <DataGridTextColumn Binding="{Binding Column2}" Header="2" Width="*" />
        <DataGridTextColumn Binding="{Binding Column3}" Header="3" Width="*" />
        <DataGridTextColumn Binding="{Binding Column4}" Header="4" Width="*" />

1 个答案:

答案 0 :(得分:1)

您需要DataGridTemplateColumn。设置其CellTemplate以包含ContentControl,其中内容将为空,以防IsKey值为false,并在IsKey 的值为true时将其设置为Icon。

<DataGridTemplateColumn IsReadOnly="True">
   <DataGridTemplateColumn.CellTemplate>
      <DataTemplate>
         <ContentControl x:Name="content"/>
         <DataTemplate.Triggers>
            <DataTrigger Binding="{Binding IsKey}" Value="True">
              <Setter TargetName="content" Property="ContentTemplate">
                 <Setter.Value>
                    <DataTemplate>
                       <Image Source="IconSourcePath" Height="30"/>
                    </DataTemplate>
                 </Setter.Value>
              </Setter>
            </DataTrigger>
         </DataTemplate.Triggers>
      </DataTemplate>
   </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>