c# - 在 WPF 双向绑定(bind)中,如何检查触发绑定(bind)更改的是 UI 元素还是 ViewModel?

标签 c# wpf xaml mvvm data-binding

我不确定要搜索哪些关键字...迷失在 Google 的海洋中。

我在 ViewModel 中的可视元素( slider )和数值之间指定了双向数据绑定(bind)。我想区分值更改是用户启动的还是基于 ViewModel 的,以便我可以有选择地触发应用程序中其他地方的事件。我如何在 XAML 文件的代码隐藏中执行此操作?

2015-02-26 更新:在回答 Amit 的问题时,我需要此功能的原因是我实际上为同一个 ViewModel 源的双向数据绑定(bind)设置了多个视觉元素,因此不区分会导致回调到依赖代码的无限循环(堆栈溢出)本身具有更新相同值的能力。

此外 - 第一次在 SO 上适当使用“堆栈溢出”时不应该有信誉点吗?

最佳答案

最好的办法是不要有两种不同的行为。您需要以任何一种方式触发相同的通知并重新计算相同的依赖属性。但我遇到过这样的情况,比如说,有时我想触发一个动画,有时我不想,所以不同的行为可能是必要的。

如果您确实需要两种不同的行为,我只会创建两个不同的属性(或一个属性和一个方法)。将一个属性绑定(bind)到 UI,并在以编程方式设置值时使用另一个。给每一个它需要的副作用。

这不仅使事情变得简单,还意味着您可以为两组行为编写单元测试。

关于c# - 在 WPF 双向绑定(bind)中,如何检查触发绑定(bind)更改的是 UI 元素还是 ViewModel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28036946/

相关文章:

c# - 是否可以将 [XmlAttribute] 作为类的默认值?

c# - 如何从并行运行中排除某些功能/场景?

c# - 添加键绑定(bind)列表

c# - 在用户看到之前在另一个线程中缓存图像

c# - 如何将 ProgressBar 放在 Button 中

c# - 使用 Roslyn 编译 xaml

c# - 我可以在 .NET 应用程序中临时覆盖 DNS 解析吗?

C# IDE 错误代码

c# - 如何将类绑定(bind)到 WPF AutoCompleteBox?

c# - 使用图像填充 ListView 时出现内存不足异常 (Windows Phone 8.1)