WPF C#,根据节点的属性值改变颜色的方法

时间:2018-05-08 13:27:32

标签: c# wpf xaml treeview

我有一个来自实体框架模型的层次结构TreeView。 我的节点都有一个属性“COID”,结帐ID。我想显示3种不同颜色的矩形,具体取决于COID属性的值。

 <HierarchicalDataTemplate ItemsSource="{Binding tblLines}">
                            <StackPanel Orientation="Horizontal" Margin="2">
                                <Image Height="15" Margin="4" x:Name="imgTreeProject" Source="/DES STUDIO PR;component/Resources/Images/folder_closed.png"/>
                                <TextBlock Text="{Binding Name}" Margin ="8" TextAlignment="Center" VerticalAlignment="Center" HorizontalAlignment="Center"/>
                                <Rectangle Name="X" Width="10" Height="10" Fill="Green"/>
                            </StackPanel>

这是我想要实现的转换器:

 public class CheckoutConverter : IValueConverter
{
    public object Convert(object entity, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        var Baseentity = entity as TblBase;
        if (Baseentity.COID == MainWindow.LocalUser.ID)
        {
            return Colors.Green;
        }
        else if (Baseentity.COID == 0)
        {
            return Colors.Transparent;
        }
        else if (Baseentity.COID != 0)
        {
            return Colors.Black;
        }
        else
            return Colors.Purple;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }

enter image description here

1 个答案:

答案 0 :(得分:2)

Fill的{​​{1}}属性绑定到您的数据对象

Rectangle

...并从转换器返回<Rectangle Name="X" Width="10" Height="10"> <Rectangle.Fill> <Binding Path="."> <Binding.Converter> <local:CheckoutConverter /> </Binding.Converter> </Binding> </Rectangle.Fill> </Rectangle> Brush的插入内容:

Color