我正在使用 MVVM 并试图将 Image 的 Source 属性数据绑定(bind)到我的 ViewModel,这样我就可以即时更改图标。为此,最好遵循什么模式?我仍然可以灵活地更改我的 ViewModel 以适应,但我不知道在 xaml 或 ViewModel 中从哪里开始。

明确地说,我不希望我的 ViewModel 知道特定的图像(这是 View 知道的),只是触发不同图像的状态。现在我只有两个状态,比如说红色和绿色。我应该创建一个枚举属性还是一个 bool 值?然后如何通过数据绑定(bind)来切换图像源?

最佳答案

您可以使用 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”,但是当您的枚举在 VM 中设置为“Image2”时,它会切换到 2.png。可以根据需要添加更多 DataTriggers。

关于MVVM 中的 WPF 数据绑定(bind) Image.Source,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2531539/

10-12 00:28
查看更多