我有一个应用程序和一个设置窗口,其中包含几个选项卡。每个选项卡都有一些字段(文本框),它们与相同的单例对象进行数据绑定。
是否有一种优雅且类似于WPF的方式,可以在“保存”按钮点击后才进行数据绑定?
目前,它会在更改文本框内容后立即进行数据绑定,我希望单例具有旧值,并仅在单击保存按钮后更新它们。
我有一个应用程序和一个设置窗口,其中包含几个选项卡。每个选项卡都有一些字段(文本框),它们与相同的单例对象进行数据绑定。
是否有一种优雅且类似于WPF的方式,可以在“保存”按钮点击后才进行数据绑定?
目前,它会在更改文本框内容后立即进行数据绑定,我希望单例具有旧值,并仅在单击保存按钮后更新它们。
对于在 XAML 中用于 Textbox
的 DataBinding
对象,请使用以下代码中值为 Explicit
的 UpdateSourceTrigger
属性:
<TextBox Name="itemNameTextBox"
Text="{Binding Path=ItemName, UpdateSourceTrigger=Explicit}" />
当你将UpdateSourceTrigger值设置为Explicit时,源值仅在应用程序调用以下UpdateSource
方法时更改(您可以将以下代码放入Save Click
事件中):
BindingExpression be = itemNameTextBox.GetBindingExpression(TextBox.TextProperty);
be.UpdateSource();
不要在每个属性的设置上提高更改通知(因为这就是触发重新绑定和更新的原因),而是将所有提高通知放在保存按钮中。然后,当您单击保存时,您将保存并告诉视图重新绑定到那些(现在设置的)属性。
进一步说: 绑定非单例属性(因为您希望保留旧设置直到单击保存) - 在这些属性上没有提高通知。
在保存按钮中,设置单例属性,然后提高所有其他属性的通知。
在取消按钮中,将其他属性设置为单例属性的值,并提高所有通知。
不要忘记在第一次加载视图时将属性设置为单例属性,并提高所有通知(就像取消操作一样)。
Text="{Binding Path=MyText, UpdateSourceTrigger=LostFocus, Mode=TwoWay}"