我正在使用MVVM并尝试将Image的Source属性数据绑定到我的ViewModel,以便我可以动态更改图标。这个最好的模式是什么?我仍然可以灵活地更改我的ViewModel以适应,但我不知道从哪里开始使用xaml或ViewModel。
为了清楚起见,我不希望我的ViewModel了解特定图像(用于查看要知道的图像),只是触发不同图像的状态。现在我只有两个州,比如红色和绿色。我应该创建一个Enum属性还是一个bool?然后我如何数据绑定切换图像源?
答案 0 :(得分:10)
您可以使用DataTrigger,并根据ViewModel中属性的值更改图像(完全在XAML中)。我个人会使用枚举,因为你可能需要多个状态。
VisualStateManager也适用于此,但需要WPF Futures或.NET 4。
为了使用DataTrigger,您可以执行以下操作:
<Image>
<Image.Style>
<Style TargetType="Image">
<Setter Property="Source" Value="1.png" />
<Style.Triggers>
<DataTrigger Binding="{Binding ViewModelEnumProperty}" Value="Image2">
<Setter Property="Source" Value="2.png" />
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
这将使用“1.png”,但是当您的虚拟机中的枚举设置为“Image2”时,它会切换到2.png。可以根据需要添加更多DataTriggers。