這個問題和聽起來一樣簡單。假設button.IsEnabled == false,當我執行button.IsEnabled = true;該按鈕仍然是假的! (通過使用Visual Studio'watch'功能在調試器中設置它之後立即查看該值)不能在C#中設置button.IsEnabled = true WPF
顯然,這種情況並不像通常的代碼那樣常見。但是系統中顯然存在一些阻礙設置的東西,我正在尋找關於它可能的想法。起初我以爲是因爲這個按鈕被掛在了一個ICommand中,顯然它控制着IsEnabled設置本身。所以我取消了ICommand。這適用於不同的按鈕,但此按鈕沒有通過「命令= {綁定路徑...}」掛接到ICommand。其實這個按鈕在C#創建爲簡單:在自定義的控件工具欄存在
Button button = new Button();
button.Content = "Save Record";
button.IsTabStop = false;
這些按鈕和發生在的PropertyChanged事件處理程序我寫這是試圖建立自己的價值的代碼。奇怪的是,相同的代碼最初成功地將按鈕設置爲false,並且工作正常!什麼可能會禁止設置IsEnabled = true?
幾個小時後:
呸,新手的錯誤(35年後,在IT)。進一步在代碼中的行是:
button.Command = new myCommand(...);
所以,事實上,按鈕是通過命令接口掛鉤。我把它拿出來,並用按鈕單擊事件處理程序替換它,問題就解決了。由於我無法在Google中找到此問題,所以經過無數次搜索後,讓我重申問題以防其他人遇到問題:當您將ICommand與UIElement掛鉤時,例如,按鈕,menuitem等.Net接管IsEnabled屬性。您不能再以編程方式設置屬性。