【问题标题】:Data grid display icon on one column一列上的数据网格显示图标
【发布时间】:2023-03-16 14:40:01
【问题描述】:

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

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

我需要在 key 为 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="*" />

【问题讨论】:

    标签: c# wpf xaml mvvm


    【解决方案1】:

    您需要DataGridTemplateColumn。将其CellTemplate 设置为包含ContentControl,其如果 IsKey 值为 false,则其内容将为 null,并在 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>
    

    【讨论】:

    • 嗨 Rohit,谢谢,但是内容是什么,为什么我需要它?这是有数据的表?目前我使用
    • content 是在 GUI 上显示数据所需的 ContentControl 名称。就像 DataGridTextColumn 在内部使用 TextBlock 在 GUI 上托管您的数据。同样,我使用 ContentControl 在 GUI 上显示图标。您需要显示的图标是什么?
    • 谢谢,只需将图标从内容更改为资源...我还有另一个问题,但我会打开新的线索。
    • 好的,很好。它应该是资源。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2020-05-21
    • 2013-12-06
    相关资源
    最近更新 更多