【问题标题】:Refresh DataBinding From View To ViewModel从 View 刷新 DataBinding 到 ViewModel
【发布时间】:2016-02-15 14:45:29
【问题描述】:

我的 WPF 项目中的数据绑定存在问题。我正在使用 MVVM 模式,我喜欢将文本框的文本值重新加载到我的视图模型中。

我正在搜索一个事件,例如 INotifyPropertyChanged,但绑定方向应该是从视图到视图模型。

我会从视图模型触发这个绑定更新。

感谢您的帮助。

【问题讨论】:

  • wpf 支持2路绑定
  • 我应该说我想从视图模型触发这个绑定更新。这可能吗?
  • 使用 updateSourceTrigger=OnPropertyChanged 和 Binding Mode = TwoWays 来实现您的目标

标签: c# wpf mvvm data-binding


【解决方案1】:

如果我正确理解您的问题,您的意思是:

View(TextBox)的变化不会自动更新 ViewModel(String 属性)。

只有调用 Explicit UpdateSource(),View 才会更新您的 ViewModel。

那么如何从 ViewModel 中显式调用 UpdateSource()

我不知道是否有办法做到这一点,因为在 MVVM 中,VM 不知道 View。

您可以设置UpdateSourceTrigger = Explicit,然后从后面的代码but isn't really compatible with MVVM中调用UpdateSource()

您可以设置UpdateSourceTrigger = OneWay,并使用带有TextBox.Text 的“保存按钮”作为Button.CommandParameter。 Example

但真正的问题是:为什么不想自动更新源?

【讨论】:

  • 非常感谢。这正是我想要的。
【解决方案2】:

你想要刷新按钮之类的东西吗?

我认为你已经实现了一个ICommand 告诉你的 ViewModel,View 想要被刷新。

或者你只是想触发每个用户编辑你的文本块?那么你必须通过UpdateSourceTrigger=PropertyChanged扩展你的绑定。

<TextBox Text="{Binding MyValue, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>

【讨论】:

  • 我希望我的视图模型告诉我的视图,视图模型将从视图中刷新。
【解决方案3】:

从 View 更新 ViewModel
绑定的 UpdateSourceTrigger 属性告诉 wpf 引擎何时更新视图模型。 如果您希望在每次更改时更新视图模型,请将其设置为“PropertyChanged”。

它支持的其他值可以找到here
模式决定流量。 this 链接将提供有关不同模式的更多信息

从 ViewModel 更新视图

每当 PropertyChanged(from INotifyPropertyChanged 接口)被触发。 依赖属性是另一种选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多