Xamarin.Forms中的页面加载未禁用按钮

时间:2019-03-08 07:17:21

标签: xamarin xamarin.forms

我的页面上有一个按钮。我想在页面加载时禁用此按钮,但未禁用它。

XAML:

 <Button IsEnabled="{Binding IsEnabledSaveBtn,Mode=TwoWay}" Text="Save" Command="{Binding SaveItem}" />

ViewModel:

bool _isEnabledSaveBtn = false;
        public bool IsEnabledSaveBtn
        {
            get { return _isEnabledSaveBtn; }
            set
            {
                _isEnabledSaveBtn = value;
                OnPropertyChanged();
            }
        }

内部ViewModel构造函数:

public CreateDiscountViewModel(INavigation navigation)
        {
            Navigation = navigation;
            IsEnabledSaveBtn=False;
        }

我也在验证TextChange事件上的数据,并且工作正常。但是我想在页面加载时禁用此按钮。

我该如何解决?

2 个答案:

答案 0 :(得分:0)

您需要进行以下更改:

在XAML中,您不需要双向绑定:

<Button IsEnabled="{Binding IsEnabledSaveBtn}" Text="Save" Command="{Binding SaveItem}" />

您的媒体资源应如下所示:

    private bool _isEnabledSaveBtn;
    public bool IsEnabledSaveBtn
    {
        get { return _isEnabledSaveBtn; }
        set
        {
            _isEnabledSaveBtn = value;
            OnPropertyChanged(nameof(IsEnabledSaveBtn));
        }
    }

然后在ViewModel构造函数中设置值:

public CreateDiscountViewModel(INavigation navigation)
    {
        Navigation = navigation;
        IsEnabledSaveBtn = false;
    }

答案 1 :(得分:0)

您的OnPropertyChanged事件似乎有问题。

尝试以下方法,它将起作用。

按钮已启用:

bool _isEnabledSaveBtn = false;
    public bool IsEnabledSaveBtn
    {
        get { return _isEnabledSaveBtn; }
        set
        {
            _isEnabledSaveBtn = value;
            OnPropertyChanged("IsEnabledSaveBtn");
        }
    }

OnPropertyChanged

 public event PropertyChangedEventHandler PropertyChanged;
            protected void OnPropertyChanged(string propertyName)
            {
                var handler = PropertyChanged;
                if (handler != null)
                    handler(this, new PropertyChangedEventArgs(propertyName));
            }

和您的构造器

IsEnabledSaveBtn = false;