在MVVM中,我设置了一些用于绑定到视图控件的属性。
我在视图中有以下图片:
<Image VerticalAlignment="Center" HorizontalAlignment="Left"
Source="/Common.Images;component/Images/Info.png"
Height="48" Width="48" Margin="20,10">
<Image.Style>
<Style TargetType="{x:Type Image}">
<Setter Property="Source" Value="/Common.Images;component/Images/Info.png"/>
<Style.Triggers>
<DataTrigger Binding="{Binding MessageType}" Value="1">
<Setter Property="Source" Value="/Common.Images;component/Images/Cancel.png"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
然后我在视图模型中有以下属性:
private int msgType = 0;
public int MessageType
{
get
{
return this.msgType;
}
set
{
if (this.msgType== value)
{
return;
}
this.msgType= value;
OnPropertyChanged("MessageType");
}
}
当发现某些错误情况时,从我的视图模型中我更新了这个属性:
this.MessageType = (int) MessageTypes.Error;
MessageTypes是在视图模型中定义的枚举:
public enum MessageTypes
{
Info = 0,
Error = 1
};
我的问题是,在设置属性MessageType时,绑定到此属性的图像不会更改。正在正确触发OnPropertyChanged。那么我做错了什么?它应该显示Cancel.png图像而不是Info.png。我想知道xaml解析器是否正确识别int类型...也许Value =“1”不正确我需要以另一种方式指定xaml解析器知道它是一个整数?