WPF C #, метод для изменения цвета в зависимости от значения свойства узла - PullRequest
0 голосов
/ 08 мая 2018

У меня есть иерархическая TreeView из модели структуры объекта. Все мои узлы имеют свойство «COID», идентификатор оформления заказа. Я хотел бы отобразить 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 голосов
/ 08 мая 2018

Свяжите свойство Fill Rectangle с вашим объектом данных

<Rectangle Name="X" Width="10" Height="10">
    <Rectangle.Fill>
        <Binding Path=".">
            <Binding.Converter>
                <local:CheckoutConverter />
            </Binding.Converter>
        </Binding>
    </Rectangle.Fill>
</Rectangle>

... и вернуть Brush вставку Color из конвертера:

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 Brushes.Green;
        }
        else if (Baseentity.COID == 0)
        {
            return Brushes.Transparent;
        }
        else if (Baseentity.COID != 0)
        {
            return Brushes.Black;
        }
        else
            return Brushes.Purple;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...