我有一个wpf加载的文本框和组合框等...我有一个按钮,它允许他们被保存为一个XML文件。它没有绑定或任何东西,我只是序列化它。现在我想能够设置一个布尔值,如果任何文本框或组合框被修改,所以例如,如果我关闭应用程序,它可以检查布尔值并询问是否需要保存。我可以想象通过在所有事件上设置这个布尔值是可能的,但是其中有太多这样的事情,这么做太疯狂了。WPF修改后的项目
有更好的选择吗?也许通过绑定? (不是真正的绑定亲)
我有一个wpf加载的文本框和组合框等...我有一个按钮,它允许他们被保存为一个XML文件。它没有绑定或任何东西,我只是序列化它。现在我想能够设置一个布尔值,如果任何文本框或组合框被修改,所以例如,如果我关闭应用程序,它可以检查布尔值并询问是否需要保存。我可以想象通过在所有事件上设置这个布尔值是可能的,但是其中有太多这样的事情,这么做太疯狂了。WPF修改后的项目
有更好的选择吗?也许通过绑定? (不是真正的绑定亲)
bool TrueExit
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
if (TrueExit)
{
MessageBoxResult result = MessageBox.Show("Save?",
"The End", MessageBoxButton.YesNo, MessageBoxImage.Stop);
if (result == MessageBoxResult.No)
e.Cancel = true;
}
绑定绝对是WPF的首选。如果您使用INotifyPropertyChanged,则可以为代表每个UI元素内容的每个属性创建一个额外的布尔值。
所以,如果我有绑定到财产“myProperty的”一个文本框,我还要创建一个名为“IsMyPropertyChanged”布尔,并做到这一点:
public bool IsMyPropertyChanged { get; set; }
private string _myProperty;
public string MyProperty
{
get
{
return _myProperty;
}
set
{
if (value != _myProperty)
{
// Update property
_myProperty = value;
NotifyPropertyChanged("MyProperty");
// Set flag
IsMyPropertyChanged = true;
}
}
}