【问题标题】:WPF databind Image.Source in MVVMMVVM中的WPF数据绑定Image.Source
【发布时间】:2011-02-01 15:47:37
【问题描述】:

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

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

【问题讨论】:

    标签: wpf data-binding mvvm


    【解决方案1】:

    您可以使用 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。可根据需要添加更多 DataTrigger。

    【讨论】:

    • 我正在使用 .Net 4。你能详细说明一下吗?也许是一个例子?
    • 我支持 Reed 的解决方案。在视图模型中使用枚举,在视图中使用数据触发器。 msdn.microsoft.com/en-us/library/…
    猜你喜欢
    • 1970-01-01
    • 2017-08-20
    • 2015-05-24
    • 1970-01-01
    • 2014-08-09
    • 1970-01-01
    • 2019-06-23
    • 2020-09-27
    • 1970-01-01
    相关资源
    最近更新 更多