3

我有一个应用程序和一个设置窗口,其中包含几个 TabItems 的 TabControl。它们中的每一个都有一些字段(文本框),它们被数据绑定到同一个 Singleton 对象。
仅在单击“保存”按钮后,是否有任何优雅且类似于 WPF 的数据绑定方式?
现在它在更改文本框的内容后立即进行数据绑定,我希望该单例具有旧值并仅在单击保存按钮后更新它们。

4

3 回答 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 回答