Выбор изображения при изменении свойства в viewmodel - PullRequest
1 голос
/ 28 июня 2011

Я хотел бы реализовать визуальную индикацию (лампочку) в моем приложении WPF, которая светится в течение короткого времени всякий раз, когда изменяется свойство (string RFID, вызывает событие PropertyChanged) в моей модели представления (MVVM).DataContext моего окна настроено на модель просмотра.Я получил два изображения, показывающие включение / выключение лампочки.

Я пробовал использовать триггеры и стили, но это не сработало:

    <Image>
        <Image.Style>
            <Style TargetType="Image">
                <Setter Property="Source" Value="LightGrey.png"/>
                <Style.Triggers>
                    <Trigger Property="RFID" Value="???">
                        <Setter Property="Source" Value="LightGreen.png"/>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </Image.Style>
    </Image>

Любая помощь приветствуется!

Ответы [ 2 ]

2 голосов
/ 28 июня 2011

Вы можете иметь логическое свойство IsLightOn в вашей ViewModel, и когда вы RFID запускаете событие PropertyChanged, ViewModel поворачивает IsLightOn = true и устанавливает таймер, который превращается IsLightOn = false через X секунд

1 голос
/ 28 июня 2011

Если вам не нужно дополнительное свойство bool, как предлагается. Вы можете написать простой конвертер значений, который делает это.

    class AnyToBoolConverter: IValueConverter   
    { 
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
        { 
            return (value != null) ? true : false; 
        } 
          
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
        { 
            return DependencyProperty.UnsetValue; 
        } 
    } 

Этот конвертер пригодится во многих ситуациях. И вы можете сделать это:

<DataTrigger Binding="{Binding Path=RFID, Converter={StaticResource boolConverter}}" Value="True"> 
      <Setter Property="Source" Value="LightGreen.png"/> 
</DataTrigger>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...