我是xaml,WPF,C#和MVVM範例的新手。我已經開始使用一個基於this example project的應用程序,在選定的摘錄中,我想在單擊身份驗證按鈕(如果您通過身份驗證後沒有點擊按鈕)從LoginPageViewModel中禁用身份驗證按鈕。我有命令綁定工作,以及視圖和ViewModel之間的文本控件綁定。我的LoginPageViewModel是基於從INotifyPropertyChanged繼承的抽象類錯誤綁定isEnabled按鈕在xaml
setter AuthenticateButtonEnabled正在工作,但它沒有綁定到窗體上的isEnabled proprerty。我的問題是,我可能錯過了什麼,以及如何跟蹤View和ViewModel之間的綁定?
的LoginPageView.xaml按鈕:
<Button x:Name="authenticateButton" Content="{x:Static res:Strings.LoginPage_authenticateButton_content}"
Grid.Column="2" Margin="53,4,0,10"
Grid.Row="2" FontSize="16"
IsEnabled="{Binding Path=AuthenticateButtonEnabled}"
Command="{Binding Path=AuthenticateCommand}" HorizontalAlignment="Left" Width="87"/>
視圖模型
private String _username;
private String _responseTextBlock;
private String _linkTextBlockURI;
private String _linkTextBlockText;
private bool _authenticateButtonEnabled;
...
private async void Authenticate()
{
ResponseTextBlock = Strings.LoginPage_responseBlock_content_checking;#this works!
AuthenticateButtonEnabled = false;
return;
}
....
public bool AuthenticateButtonEnabled
{
get { return _authenticateButtonEnabled; }
set { _authenticateButtonEnabled = value; OnPropertyChanged("AuthenticateButtonEnabled"); }
}
// this is in the abstract class.
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = this.PropertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs(propertyName));
}
Sinatr感謝您的建議,我覺得很沮喪使用這個MVVM範例 - 一個簡單的.enabled = false已經讓我在一天中實現了更好的一部分 - 我不禁想到範式太複雜,無法使用.....確定從演示文稿抽象邏輯是好的,但我不禁認爲它應該更容易.... – pgee70