2012-02-26 61 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; 
     } 
    } 
}