我在我的Wpf-App(MVVM)中有一个内容控件,它绑定到一个对象并在文本框中显示对象属性,因此用户可以编辑属性的值。 我想用GoF的命令模式实现撤消/重做功能。 为此我需要一个点,我可以创建命令并将其设置为我的undomanager。 我的想法是添加一个提交按钮。按下按钮时,我更新文本框的源(我的属性)并创建我的命令对象以使更改可撤消(保存对象的旧状态和新状态)。 但: - 对于使用提交按钮,我需要将文本框的UpdateSourceTrigger设置为Explicit。如果我想更新我的源代码,我需要在我的视图中引用控件,据我所知,这是很糟糕的。我怎样才能做到这一点? 使用MVVM,我必须为SubmitButton创建一个Command(WPF命令,而不是我的undo redo命令),但是我没有看到如何在不引用文本框的情况下将更改应用于该命令的属性(进一步通过datatemplates生成)
感谢Walter
答案 0 :(得分:0)
我假设您的TextBox
控件绑定到ViewModel
类中的属性。如果您将提交按钮绑定到ViewModel Command
,而Command Pattern Collection
又可以向您ViewModel
添加适当的命令,并且还会更改部分Textbox
属性,Textbox
控件中的值将会也有更新。现在,要使ViewModel
更新它的值,当它绑定的属性值发生变化时,INotifyPropertyChanged
类需要实现PropertyChanged
接口并引发{{1}}事件来自属性setter,以该属性的名称作为参数。