WPF仅显示保存对话框的数据已更改

时间:2015-05-22 07:19:16

标签: c# wpf dialog save window

检测WPF窗口中是否有更改数据的最佳方法是什么?

我为项目创建了一个默认窗口,其中包含基本的保存和删除行为。但目前窗口总是要求,是否保存更改。但我想实现,只有用户真的改变了一些东西时才会出现保存对话框。

我的第一个想法是,创建一个界面,必须在窗口中使用的所有控件中实现。但是我不能简单地使用wpf默认控件。

有没有人对这种方法有一些经验?

谢谢!

1 个答案:

答案 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;
}