Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
保存在WPF数据输入表单中_Wpf_Entity Framework_Mvvm - Fatal编程技术网

保存在WPF数据输入表单中

保存在WPF数据输入表单中,wpf,entity-framework,mvvm,Wpf,Entity Framework,Mvvm,我有一个WPF MVVM应用程序,它包含一个带有多个文本框的数据输入表单。我注意到,当用户在一个文本框中进行更改时,上下文对象直到用户从该文本框中弹出选项卡时才知道已进行了更改。一旦用户从文本框中弹出标签,一切正常。但是我想知道,在用户不必关闭文本框的情况下进行了更改 这可能吗 我的表单的工作方式是保存和取消按钮绑定到ICommands。这些命令有一个“CanSave”和“CanCancel”方法,用于检查EntityState是否已更改,但允许按钮启用。这很好,但是用户必须关闭文本框才能使事情

我有一个WPF MVVM应用程序,它包含一个带有多个文本框的数据输入表单。我注意到,当用户在一个文本框中进行更改时,上下文对象直到用户从该文本框中弹出选项卡时才知道已进行了更改。一旦用户从文本框中弹出标签,一切正常。但是我想知道,在用户不必关闭文本框的情况下进行了更改

这可能吗

我的表单的工作方式是保存和取消按钮绑定到ICommands。这些命令有一个“CanSave”和“CanCancel”方法,用于检查EntityState是否已更改,但允许按钮启用。这很好,但是用户必须关闭文本框才能使事情正常进行

如何在用户不禁用已更改的文本框的情况下执行此操作?

将文本框的绑定方向(模式)设置为双向而不是默认值,并将UpdateSourceTrigger设置为PropertyChanged而不是默认值。。。像这样:

<TextBox x:Name="txtPersonLastname" Text="{Binding Person.LastName, Mode=TwoWay, NotifyOnValidationError=True, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, ValidatesOnExceptions=True}" />

(在本摘录中,我还有一些额外的属性需要验证。)

关键区别在于PropertyChanged,它将更新ViewModel中的备份属性。当用户在文本框中键入任何内容时,PropertyChanged事件将触发,并反过来触发CanSave、Save例程


在Blend中,它应该是这样的:

您必须更改更新源触发器属性以反映ViewModel中的更改

比如说

<TextBox Text={Binding Path=MyProperty,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}></TextBox>

不要忘记,
My Property
应该从ViweModel中更改fire属性