我的WPF项目中存在数据绑定问题。我正在使用MVVM模式,我喜欢将文本框的textvalue重新加载到我的viewmodel。
我在搜索一个事件,比如INotifyPropertyChanged,但是bindingdirection应该从视图到viewmodel。
我将从viewmodel触发此绑定更新。
感谢您的帮助。
答案 0 :(得分:2)
如果我理解你的问题,你的意思是:
View(TextBox)中的更改不会自动更新ViewModel(String Property)。
只有通过调用明确
UpdateSource()
,视图才会更新您的ViewModel。那么如何从ViewModel中明确调用
UpdateSource()
?
我不知道是否有办法做到这一点,因为在MVVM中VM并不了解View。
您可以设置UpdateSourceTrigger = Explicit
,然后通过后面的代码but isn't really compatible with MVVM拨打UpdateSource()
。
您可以设置UpdateSourceTrigger = OneWay
,并使用"保存按钮"使用TextBox.Text
作为Button.CommandParameter。 Example
但真正的问题是:为什么你不想自动更新源?
答案 1 :(得分:1)
从View中更新ViewModel
绑定的UpdateSourceTrigger属性告诉wpf引擎何时更新viewmodel。
如果您希望在每次更改时更新viewmodel,请将其设置为" PropertyChanged"。
可以找到它支持的其他值here
模式决定流程。
this链接可提供有关不同模式的更多信息
从ViewModel更新视图
视图都会更新 触发了INotifyPropertyChanged接口。 依赖属性是另一种选择。
答案 2 :(得分:0)
你想要像刷新按钮吗?
我认为,与您实现ICommand
告诉您的ViewModel相比,View希望刷新。
或者您是否只想触发Textblock的每个用户编辑?然后您必须按UpdateSourceTrigger=PropertyChanged
扩展您的绑定。
<TextBox Text="{Binding MyValue, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>