正如标题所示,在Xamarin Forms上,我试图在ViewModel上的属性发生变化时从View中观看。
这是我的ViewModel类
public class RegisterViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public bool AutomaticVerificationDone { get; set; }
public ICommand AutomaticVerification
{
get
{
return new Command(async () =>
{
AutomaticVerificationDone = true;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("AutomaticVerificationDone"));
});
}
}
}
这是我的Register.xaml.cs类
public partial class Register : ContentPage
{
public static readonly BindableProperty AutomaticVerificationDoneProperty = BindableProperty.Create(nameof(AutomaticVerificationDone), typeof(bool), typeof(Register), false);
public bool AutomaticVerificationDone
{
get { return (bool)GetValue(AutomaticVerificationDoneProperty); }
set
{
SetValue(AutomaticVerificationDoneProperty, value);
if (value)
accessButton.Opacity = 1;
else
accessButton.Opacity = 0.8f;
}
}
public Register()
{
InitializeComponent();
NavigationPage.SetHasNavigationBar(this, false);
this.BindingContext = new RegisterViewModel();
}
}
这样做没有任何反应。 我错过了什么?
答案 0 :(得分:2)
可绑定的属性不会使用你的二传手;它们直接通过可绑定的属性系统。
相反,您需要pass a propertyChanged
callback到BindableProperty.Create
。
但实际上,您应该在XAML中绑定Opacity
(使用转换器)。