MVVM中的WPF数据绑定Image.Source

时间:2010-03-28 01:03:15

标签: wpf data-binding mvvm

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

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

1 个答案:

答案 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。