在viewmodel中选择属性更改的图像

时间:2011-06-28 13:06:35

标签: c# wpf

我想在我的WPF应用程序中实现一个可视指示(灯泡),只要在我的视图模型(MVVM)中有属性(string RFID,引发PropertyChanged事件),它就会发光很短的时间变化。我的窗口DataContext设置为viewmodel。我有两个图像显示一个灯泡打开/关闭。

我试过了触发器和样式,但它没有用完:

    <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 个答案:

答案 0 :(得分:2)

您的ViewModel中可以有一个布尔IsLightOn属性,只要RFID触发PropertyChanged事件,ViewModel就会转动IsLightOn = true并设置一个转为IsLightOn = false的计时器在X秒之后

答案 1 :(得分:1)

如果您不想要建议的额外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>