2012-02-26 82 views
0

我有一个wpf加载的文本框和组合框等...我有一个按钮,它允许他们被保存为一个XML文件。它没有绑定或任何东西,我只是序列化它。现在我想能够设置一个布尔值,如果任何文本框或组合框被修改,所以例如,如果我关闭应用程序,它可以检查布尔值并询问是否需要保存。我可以想象通过在所有事件上设置这个布尔值是可能的,但是其中有太多这样的事情,这么做太疯狂了。WPF修改后的项目

有更好的选择吗?也许通过绑定? (不是真正的绑定亲)

回答

0
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; 
      } 
0

绑定绝对是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; 
     } 
    } 
}