c# - WPF DataGrid 通过绑定(bind)设置样式

标签 c# wpf xaml datagrid

我在 WPF 中使用 DataGrid 来显示值。 现在我想要绿色和红色的行。我用 DataTrigger 试了一下,但没有任何反应。

我的 XAML:

<DataGrid x:Name="dgAbos" ItemsSource="{Binding Source=AboList}" HorizontalAlignment="Stretch" Margin="10,30,10,10" VerticalAlignment="Stretch" Height="Auto" Width="Auto">
        <DataGrid.Columns>
              <DataGridTextColumn Header="ItemID" Binding="{Binding ItemID}" />
        </DataGrid.Columns>
        <DataGrid.RowStyle>
             <Style TargetType="DataGridRow">
                    <Style.Triggers>
                         <DataTrigger Binding="{Binding Active}" Value="false">
                               <Setter Property="Background" Value="Red"></Setter>
                         </DataTrigger>
                         <DataTrigger Binding="{Binding Active}" Value="true">
                                <Setter Property="Background" Value="Green"></Setter>
                         </DataTrigger>
                     </Style.Triggers>
               </Style>
         </DataGrid.RowStyle>
 </DataGrid>

绑定(bind)类型是:

ObservableCollection<OPCItem> AboList = new ObservableCollection<OPCItem>();

要显示的项目是 OPCItem:

class OPCItem
{
    public String ItemID { get; set; }

    public String Name { get; set; }

    public String Value { get; set; }

    public DateTime DateTime { get; set; }

    public String Group { get; set; }

    private Boolean _Active;

    public String Active
    {
        get
        {
            return (_Active == true ? "Aktiv" : "Inaktiv");
        }
        set
        {
            _Active = Convert.ToBoolean(value);
        }
    }
}

我如何填写列表:

  AboList.Add(new OPCItem { ItemID = Item.ItemID, Group = GroupName, Active = "true" });

但是行没有改变颜色,为什么?

最佳答案

您的 Active 属性的值永远不会是 "true""false",因此触发器永远不会被实际触发。您应该修改触发器的预期值以反射(reflect) Active 可能采用的值(即 "Aktiv""Inaktiv"):

<DataTrigger Binding="{Binding Active}" Value="Inaktiv">
    <Setter Property="Background" Value="Red"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Active}" Value="Aktiv">
    <Setter Property="Background" Value="Green"></Setter>
</DataTrigger>

关于c# - WPF DataGrid 通过绑定(bind)设置样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38054858/

相关文章:

c# - 翻转滚动条 WPF

C# WPF 将本地化文本绑定(bind)到元素

c# - 列表框的改变颜色变化

c# - 使用 StopWatch 类测量 C#/异步数据访问

c# - 如何确保我的 LINQ 查询在我的 DAL 中调用时执行,而不是以延迟方式执行?

WPF RichTextBox - 禁用编辑但保留光标

wpf - 如何停止在特定条件下创建模板

wpf - 如何在 WPF 中的 DataGrid 标题下方绘制分隔线

c# - AForge.NET 中的 "Source pixel format is not supported by the filter"错误

c# - 使用 LINQ 解析 XML 数据