Триггер при изменении поля класса - PullRequest
1 голос
/ 02 сентября 2010

Я создал DataGridCellTemplate, где у меня есть элемент управления Image. По умолчанию его свойство Source равно X. Я заполняю DataGrid объектами своего собственного класса (также реализован интерфейс INotifyPropertyChanged).

Я хотел бы изменить свойство Source элемента управления Image, когда какая-либо логическая переменная изменится с False на True.

Должен ли я использовать триггер? Если да, то как? Или, может быть, это должно быть сделано в коде C #?

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

Буду признателен за любую помощь.

Ответы [ 2 ]

0 голосов
/ 02 сентября 2010

В вашем DataTemplate попробуйте следующее:

<DataTemplate>
    <Image Name="Image" Source="X"/>
    <DataTemplate.Triggers>
        <DataTrigger Binding="{Binding BooleanProperty}" Value="True">
            <Setter Property="Source" TargetName="Image" Value="Y" />
        </DataTrigger>
    </DataTemplate.Triggers>
</DataTemplate>

Где BooleanProperty - свойство, которое запускает сдвиг источника. Обратите внимание, что у изображения должно быть имя - и его следует использовать в теге Setter. В примере - я меняю источник с «X» на «Y»

Надеюсь, это поможет!

0 голосов
/ 02 сентября 2010

Вы должны увидеть, будет ли конвертер делать то, что вы хотите.Вы пишете один в коде, создавая класс, который реализует интерфейс IValueConverter ( MSDN имеет пример на своем сайте).

Затем вы объявите ValueConverter как StaticResource, как показано ниже(вам придется объявить локальное пространство имен, если у вас его еще нет):

<local:BoolToImageConverter x:Key="imageConverter" />

Чтобы использовать его, вы затем связываете свойство ImageControl Source с логическим свойством и указываете конвертер всвязывание.Ниже приведен пример:

<Image Source={Binding Path=IsImageShown, Converter={StaticResource imageConverter}} />

Еще одна вещь, о которой следует помнить, - это то, что преобразователь не может просто вернуть строку, содержащую URI, в местоположение изображения.Он должен вернуть ImageSource, например, BitmapImage.

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