我想在我的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>
感谢任何帮助!
答案 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>