gpt4 book ai didi

wpf - 来自 Enum 的 MVVM 绑定(bind)

转载 作者:行者123 更新时间:2023-12-04 19:39:33 24 4
gpt4 key购买 nike

我正在处理我的第一个 WPF/MVVM 项目,我很难全神贯注于一些事情。该项目将成为已在 VB 中创建的内容的独立应用程序,因此所有逻辑和业务规则都已经存在。

我遇到的问题是尝试实现绑定(bind)。我的应用程序上有几个按钮,它们的所有属性(IsEnabled、文本、图像)都依赖于一个枚举。枚举基于状态并存在于模型中。

在 VB 应用程序中,我有一个巨大的 switch 语句来刷新按钮的属性,并且在状态可能发生变化的每个地方都调用它。所以对于这个版本,我的 ViewModel 中的每个按钮都有一个 bool 值和字符串,基于状态,但无法在每次状态更改时强制它更新(这种情况非常频繁)。

我已经阅读了一些关于 INotifyPropertyChanged 的​​内容,但是需要在我的 ViewModel 中启动更改的属性在我的模型中。我是不是用错了方法?

最佳答案

我会在您的按钮样式中使用 DataTrigger。每当绑定(bind)值更新时,DataTrigger 都会重新求值,并在必要时设置新值

<Style x:Key="MyButtonStyle" TargetType="{x:Type Button}">
<Style.Triggers>
<DataTrigger Binding="{Binding MyEnumProperty}"
Value="{x:Static local:MyEnum.Value1}">
<Setter Property="IsEnabled" Value="False" />
<Setter Property="Content" Value="Value 1" />
</DataTrigger>
<DataTrigger Binding="{Binding MyEnumProperty}"
Value="{x:Static local:MyEnum.Value2}">
<Setter Property="IsEnabled" Value="True" />
</DataTrigger>
</Style.Triggers>
</Style>

您可以对 Image 样式做同样的事情 - 根据当前值在 DataTrigger 中设置 Image.Source 属性Status 枚举的一部分是。

请记住,您的 MyEnumProperty 需要在更改时发出 PropertyChange 通知,以便 UI 知道该值已更改并更新任何依赖于该值的绑定(bind)。

关于wpf - 来自 Enum 的 MVVM 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12688730/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com