WPF: привязка данных к ListView, так что ForeColor элемента списка отражает изменения значения свойства bool - PullRequest
1 голос
/ 07 июля 2011

Приложение WPF, .NET 3.5.

У меня есть ListView элемент управления, к которому я привязываю коллекцию бизнес-классов.

Я бы хотел связать ForeColor элементов со свойством bool класса (скажем, MyClass. Active ), чтобы элементы отображались черным, когда они активны. Светло-серый, когда отключен.

Я хочу, чтобы элементы списка могли менять свой цвет "на лету", я имею в виду, что при изменении значения Active одного из экземпляров в моей базе данных с привязкой к данным соответствующий элемент списка мог бы менять свой цвет. автоматически.

Что мне нужно для этого? Я нашел множество учебных пособий по привязке данных WPF в сети, некоторые вопросы по StackOverflow, но это не совсем одно и то же, и я не хочу начинать комбинировать свое решение из всего, что я могу получить, методом проб и ошибок .

Я знаю о INotifyPropertyChanged (для моего бизнес-класса), IValueConverter (но нужно ли это для bool ??), DataTrigger и т. Д.

Но какие части головоломки мне действительно нужны, как проще всего достичь своей цели?

Ответы [ 2 ]

2 голосов
/ 07 июля 2011

Я бы просто сделал это в стиле и применил бы этот стиль к элементам списка.При условии, что ваш объект реализует INotifyPropertyChanged, а событие измененного свойства вызывается при изменении IsActive, это изменит передний план на Серый, если IsActive = False

<Style x:Key="DisableInactiveTextStyle" TargetType="{x:Type TextBlock}">
    <Setter Property="Foreground" Value="Black" />
    <Style.Triggers>
        <DataTrigger Binding="{Binding IsActive}" Value="False">
            <Setter Property="Foreground" Value="LightGray" />
        </DataTrigger>
    </Style.Trigger>
</Style>

<TextBlock Style="{StaticResource DisableInactiveTextStyle}" ... />
0 голосов
/ 07 июля 2011

Я бы предложил создать IValueConverter, который принимает bool и возвращает цвет.Затем вы можете привязать ForeColor к свойству MyClass.Active и использовать созданный конвертер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...