2017-08-14 81 views
-1

我想要將Button IsEnabled綁定到我的ViewModel。所以,我想這一點:WPF按鈕IsEnabled綁定失敗

<Button Content="{Binding Icon}" Command="{Binding Connect}" IsEnabled="{Binding ConnectBtnEnable, Mode=TwoWay}" /> 

並在視圖模型:

private bool _ConnectBtnEnable = true; 
public bool ConnectBtnEnable 
{ 
    get { return _ConnectBtnEnable; } 
    set { _ConnectBtnEnable = value; OnPropertyChanged(); } 
} 

但是,當我設置使用該屬性:

public void Connect() 
{ 
    ConnectBtnEnable = false; 
} 

它不工作,什麼是問題。提前致謝!

回答

1

如果您使用的是按鈕命令,建議不要單獨綁定按鈕的IsEnabled屬性。相反,您應該在該命令的「CanExecute」方法實現中提供正確的值。這應該啓用或禁用相應的按鈕。

您可以參考本文的樣本ICommand實現 - https://www.codeproject.com/Tips/813345/Basic-MVVM-and-ICommand-Usage-Example

此外,更新控制 - 確保更新VM(非成員字段)的性能;以便觸發通知更新,並更新綁定目標(控制狀態)。

0

因爲您需要設置ConnectBtnEnable而不是_ConnectBtnEnable。這是一個很好的例子,你應該以除屬性之外的其他方式來命名你的私人領域。例如,_connectBtnEnable

+0

謝謝,但即使我更改爲'ConnectBtnEnable',它仍然不起作用。 – BarryLib

+0

@BarryLib在你的問題中添加更多細節。你確定該按鈕的數據上下文是包含'ConnectBtnEnable'屬性的視圖模型嗎?顯示「OnPropertyChanged」方法的代碼。 – Maxim