MVVM中的WPF数据绑定Image.Source

Bre*_*obi 7 data-binding wpf mvvm

我正在使用MVVM并尝试将Image的Source属性数据绑定到我的ViewModel,以便我可以动态更改图标.这个最好的模式是什么?我仍然可以灵活地更改我的ViewModel以适应,但我不知道从哪里开始xaml或ViewModel.

为了清楚起见,我不希望我的ViewModel知道特定的图像(这是视图要知道的),只是触发不同图像的状态.现在我只有两个州,比如红色和绿色.我应该创建一个Enum属性还是一个bool?然后我如何数据绑定切换图像源?

Ree*_*sey 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>
Run Code Online (Sandbox Code Playgroud)

这将使用"1.png",但是当你的枚举在VM中设置为"Image2"时,它会切换到2.png.可以根据需要添加更多DataTriggers.