检测WPF窗口中是否有更改数据的最佳方法是什么?
我为项目创建了一个默认窗口,其中包含基本的保存和删除行为。但目前窗口总是要求,是否保存更改。但我想实现,只有用户真的改变了一些东西时才会出现保存对话框。
我的第一个想法是,创建一个界面,必须在窗口中使用的所有控件中实现。但是我不能简单地使用wpf默认控件。
有没有人对这种方法有一些经验?
谢谢!
答案 0 :(得分:1)
就个人而言,我喜欢通过订阅Control的SourceUpdated事件来解决这个问题。您可以为所有控件使用一个事件处理程序,这使我的眼睛非常漂亮。在您的XAML中,使用
<TextBox x:Name="MyNotifyingTextBox" Text="{Binding Path=SomeProperty, NotifyOnSourceUpdated=True}" SourceUpdated="Control_SourceUpdated"/>
在代码隐藏/ ViewModel / ...
中使用这样的代码bool hasChange = false;
public bool HasChange
{
get { return hasChange; }
set { hasChange = value; }
}
private void Control_SourceUpdated(object sender, DataTransferEventArgs e)
{
this.HasChange = true;
}