【问题标题】:C# WPF DataGrid change cell icon resource programmaticallyC# WPF DataGrid 以编程方式更改单元格图标资源
【发布时间】:2016-02-23 15:37:35
【问题描述】:

我以前从未在 C# 中使用过 DataGrid(也很少使用 C#),我正在努力更改我在 XAML 中设置的 DataGrid 单元格图标。默认情况下,它设置为 appbar_question 的动态资源,并且在满足某些条件时,我希望能够将其更改为 appbar_check 的资源(我正在使用 mahapps 图标)。

XAML 代码

    <DataGrid x:Name="dataGrid" AutoGenerateColumns="False" ItemsSource="{Binding}">

        <DataGrid.Columns>

            <DataGridTextColumn HeaderStyle="{StaticResource CenterMe}" Header="Website" Binding="{Binding Website}">
                    <DataGridTextColumn.CellStyle>
                    <Style>
                        <Setter Property="FrameworkElement.HorizontalAlignment" Value="Center"/>
                    </Style>
                    </DataGridTextColumn.CellStyle>
            </DataGridTextColumn>

            <DataGridTemplateColumn HeaderStyle="{StaticResource CenterMe}" Header="Status" >
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <Button Click="ShowStatus">
                            <Button.Template>
                                <ControlTemplate>
                                    <Rectangle Width="16" Height="16" Fill="{Binding RelativeSource={RelativeSource AncestorType=Button}, Path=Foreground}">
                                        <Rectangle.OpacityMask>
                                            <VisualBrush Stretch="Fill" Visual="{DynamicResource appbar_question}" />
                                        </Rectangle.OpacityMask>
                                    </Rectangle>
                                </ControlTemplate>
                            </Button.Template>
                        </Button>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>

        </DataGrid.Columns>

    </DataGrid>

首先我尝试直接访问单元格,但我看到 WPF 中的 DataGrids 像您一样绑定到一个对象,然后将它们作为项目访问并更改该对象中的属性。但是我尝试这样做但不知道如何绑定到我的对象中的资源?

【问题讨论】:

    标签: c# wpf xaml datagrid wpfdatagrid


    【解决方案1】:

    尝试使用 DataTemplate.Triggers: 1. 为你的 VisualBrush 命名:

         <VisualBrush x:Name="myBrush"...
    
    1. 添加 DataTemplate.Triggers:

      <DataTemplate.Triggers>
         <DataTrigger Binding="{Binding to_my_property}" Value="my_condition">
            <Setter TargetName="myBrush" Property="Visual" Value="{DynamicResource appbar_check}"/>
         </DataTrigger>
      </DataTemplate.Triggers>
      

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-06
      • 1970-01-01
      • 2017-01-26
      • 1970-01-01
      • 2013-09-29
      • 2010-12-10
      相关资源
      最近更新 更多