Xamarin.forms xamarin prism forms属性已更改,未触发

Xamarin.forms xamarin prism forms属性已更改,未触发,xamarin.forms,fody-propertychanged,prism-6,Xamarin.forms,Fody Propertychanged,Prism 6,我对prism.forms和propertychanged有问题 我有settingsmodel、settingsviewmodel和settingspage,它们显示了下面的代码 设置模型 public class SettingsModel: BindableBase { public string Url { get; set; } public bool IsEnabled{get;set;} public string ApiUrl { get; set; }

我对prism.forms和propertychanged有问题

我有settingsmodel、settingsviewmodel和settingspage,它们显示了下面的代码

设置模型

public class SettingsModel: BindableBase
{
    public string Url { get; set; }
    public bool IsEnabled{get;set;}
    public string ApiUrl { get; set; }


    public SettingsModel()
    {
        this.Url = string.Empty;
        this.IsEnabled = false;
        this.ApiUrl = string.Empty;
    }
}
设置视图模型

[ImplementPropertyChanged]
public class SettingsPageViewModel : ViewModelBase
{

    readonly INavigationService _navigationService;
    readonly IUserDialogs _userDialogs;
    readonly IProductService _productService;

    #region Constructor

    public SettingsPageViewModel(INavigationService navigationService,
                              IUserDialogs userDialogs, IProductService productService)
    {
        _navigationService = navigationService;
        _userDialogs = userDialogs;
        _productService = productService;

        this.Settings = new SettingsModel();

        SaveCommand = new DelegateCommand(Save).ObservesCanExecute((vm) => Settings.IsEnabled);

    }

    #endregion


    #region Model


    SettingsModel _settingsModel;
    public SettingsModel Settings
    {
        get { return _settingsModel; }
        set { 

             if (_settingsModel != null)
                _settingsModel.PropertyChanged -= MyPersonOnPropertyChanged;

            SetProperty(ref _settingsModel, value); 


             if (_settingsModel != null)
                _settingsModel.PropertyChanged += MyPersonOnPropertyChanged;

            Validation();
        }
    }


    public bool IsLoading { get; set; }

    public DelegateCommand SaveCommand { get; set; }
    #endregion


    void MyPersonOnPropertyChanged(object sender, PropertyChangedEventArgs propertyChangedEventArgs)
    {
        Validation();
    }

    #region Methods

    async void Save()
    {

        var result = await _productService.GetProducts(Priority.UserInitiated,"","","");

    }

    void Validation()
    {
        Settings.IsEnabled = !string.IsNullOrEmpty(Settings.ApiUrl) ? true : false;
    }




    #endregion
}
和设置SPAGE XAML

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
    xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms" 
    prism:ViewModelLocator.AutowireViewModel="True" 
    x:Class="XXX.Warehouse.SettingsPage">

<Entry Text="{Binding Settings.ApiUrl}" Margin="0,5,0,5"
       Placeholder="www.example.com" HorizontalOptions="FillAndExpand" />
<Button Text="Save"
        FontSize="16"
        BorderRadius="5"
        TextColor="White"
        BackgroundColor ="#578A17"
        IsEnabled="{Binding Settings.IsEnabled}"
        Command="{Binding SaveCommand}" />

我想做的是当用户输入url时,IsEnabled属性将为true,当url为空时,IsEnabled属性将为false,如果IsEnabled为false,则保存按钮,按钮未启用

我的主要问题是,我写入了条目url,但propertychanged事件没有被触发

我怎样才能解决这个问题

多谢各位