C#WPF DataTemplate在属性上设置背景色

thndrwrks

我有一个TreeView,其中包含许多此类Verify类。最终,如果类的Success属性为true,我想将项目的背景颜色更改为Green,如果该属性为false,则更改为Red。

public class Verify : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    protected void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }

    public string Name { get { return "Dummy Text"; } }

    private bool success;
    public bool Success
    {
        get { return success; }
        set { success = value; NotifyPropertyChanged(); }
    }

    public Verify()
    {
        Success = true; /* Test that the background changes color */
    }
}

到目前为止,这是我在TreeView中获得的地方。为了进行测试,我创建了一个ObservableCollection<Verify> VerifyWrite并向其中添加了几个条目。这就是我的TreeView绑定的对象。我希望TreeView中的所有条目都是绿色,因为我已将Success设置为true,但背景未设置为任何值。

        <TreeViewItem Header="Verify Write" IsExpanded="True" ItemsSource="{Binding VerifyWrite}">
            <TreeViewItem.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Name}"/>

                    <DataTemplate.Triggers>
                        <DataTrigger Binding="{Binding Success}" Value="True">
                            <Setter Property="TreeViewItem.Background" Value="Green"/>
                        </DataTrigger>
                    </DataTemplate.Triggers>
                </DataTemplate>
            </TreeViewItem.ItemTemplate>
        </TreeViewItem>

我对WPF很陌生,也很迷失。

man

模板内部的触发器仅适用于模板内部的元素。为此,您需要命名这些元素:

<DataTemplate>
    <Grid x:Name="ItemBackground">
        <TextBlock Text="{Binding Name}"/>
    </Grid>

    <DataTemplate.Triggers>
        <DataTrigger Binding="{Binding Success}" Value="True">
            <Setter TargetName="ItemBackground" Property="Background" Value="Green"/>
        </DataTrigger>
    </DataTemplate.Triggers>
</DataTemplate>

但是这种方法不允许您为整个项目着色。为此,您应该这样使用ItemContainerStyle

<TreeViewItem Header="Verify Write" IsExpanded="True" ItemsSource="{Binding VerifyWrite}">
    <TreeViewItem.ItemContainerStyle>
        <Style TargetType="TreeViewItem">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Success}" Value="True">
                    <Setter Property="Background" Value="Green"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TreeViewItem.ItemContainerStyle>
</TreeViewItem>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C#WPF标签背景颜色类别

来自分类Dev

背景不会更改按钮C#WPF

来自分类Dev

C#WPF标签背景颜色类别

来自分类Dev

C#WPF BorderBrush不会设置颜色

来自分类Dev

C#WPF DataSource属性无法识别

来自分类Dev

数据绑定到属性C#wpf

来自分类Dev

ViewModel上的C#WPF声明接口

来自分类Dev

C#WPF将gif动画设置为背景

来自分类Dev

图像列表/数组的C#WPF CellTemplate / DataTemplate

来自分类Dev

RichTextBox滚动条图像作为背景C#WPF

来自分类Dev

C#WPF ListView ItemsSource-设置文本和图片

来自分类Dev

C#WPF为所有控件设置Tag = name

来自分类Dev

C#WPF:视图未获得属性的更改

来自分类Dev

C#WPF绑定不从属性获取数据

来自分类Dev

C#WPF绑定不从属性获取数据

来自分类Dev

C#WPF属性网格文件浏览器

来自分类Dev

在C#WPF中的滑块上添加直方图

来自分类Dev

C#WPF XAML在UserControl负载上运行XAML命令

来自分类Dev

如何在表C#WPF上填充数据

来自分类Dev

右键单击并复制C#WPF DataGrid上的内容菜单

来自分类Dev

C#WPF更改线程上的ImageSource图像

来自分类Dev

自定义属性类型指令,可设置c3图表的背景色

来自分类Dev

WPF C#:设置WPF应用程序的背景色未完全设置

来自分类Dev

C#WPF DataGrid将行背景绑定到DataRow中找到的属性

来自分类Dev

设置DataGrid单元格背景色WPF

来自分类Dev

在WPF中使用动态资源设置控件的背景色?

来自分类Dev

如何在WPF中设置标签的背景色?

来自分类Dev

类库上的C#WPF(MahAppsMetro)应用程序在Designer上显示

来自分类Dev

C#WPF应用程序.NET 4.5设置鼠标位置