我有一個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;
}
}
}