我对xaml、WPFs、C#和MVVM范式都很新。我从这个示例项目开始创建了一个应用程序,在选定的摘录中,我想在单击身份验证按钮后禁用LoginPageViewModel中的该按钮(如果已经通过身份验证,则单击按钮没有意义)。 我已经使命令绑定工作正常,并且在视图和ViewModel之间实现了文本控件绑定。我的LoginPageViewModel基于继承自INotifyPropertyChanged的抽象类。
AuthenticateButtonEnabled的setter正在工作,但它没有绑定到表单上的isEnabled属性。我的问题是,我可能错过了什么,如何跟踪视图和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));
}