我有一个应用程序和一个带有TabControl的设置窗口,其中包含几个TabItems。它们中的每一个都有一些字段(文本框),它们被数据化为同一个Singleton对象
只有在保存按钮单击后才有任何优雅且类似WPF的数据绑定方式?
现在它在更改文本框的内容后立即进行了数据绑定,我希望该单例具有旧值并仅在单击保存按钮后更新它们。
答案 0 :(得分:3)
对于DataBinding
的XAML中使用的Textbox
对象,请使用值为UpdateSourceTrigger
的 Explicit
属性,如下所示:
<TextBox Name="itemNameTextBox"
Text="{Binding Path=ItemName, UpdateSourceTrigger=Explicit}" />
当您将UpdateSourceTrigger值设置为Explicit时,源值仅在应用程序调用{{1}}方法时更改,如下所示(您可以将下面的代码放在Save UpdateSource
事件中):
Click
答案 1 :(得分:2)
不是在每个属性的集合上引发更改通知(因为这是触发重新绑定和更新的内容),而是将所有引发通知放在保存按钮中。然后,当您单击“保存”时,将保存并告诉“视图”重新绑定到那些(现在已设置)属性。
进一步说明: 绑定到非单一属性(因为您希望保留旧设置,直到单击保存) - 没有对这些属性发出通知。
在保存按钮中,设置单身人士属性,然后提出其他属性的所有通知。
在取消按钮中,将其他属性设置为单身人士属性的值,并提出所有通知。
第一次加载视图时,不要忘记将属性设置为单例属性,并引发所有通知(就像取消一样)。
答案 2 :(得分:0)
如果您使用的是WPF,请将UpdateSourceTrigger更改为LostFocus。我认为这将解决目的。
Text="{Binding Path=MyText, UpdateSourceTrigger=LostFocus, Mode=TwoWay}"