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