Xamarin Forms从.xaml.cs类中监视ViewModel属性

时间:2017-06-22 14:03:57

标签: c# xamarin mvvm binding xamarin.forms

正如标题所示,在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();
    }
}

这样做没有任何反应。 我错过了什么?

1 个答案:

答案 0 :(得分:2)

可绑定的属性不会使用你的二传手;它们直接通过可绑定的属性系统。

相反,您需要pass a propertyChanged callbackBindableProperty.Create

但实际上,您应该在XAML中绑定Opacity(使用转换器)。