XAML in Xamarin.Forms 基礎篇 電子書

XAML in Xamarin.Forms 基礎篇 電子書
XAML in Xamarin.Forms 基礎篇 電子書

Xamarin.Forms 快速入門 電子書

Xamarin.Forms 快速入門 電子書
Xamarin.Forms 快速入門 電子書

2016/10/02

Xamarin.Forms Prism DelegateCommand 的更新狀態為是否可以使用

在建立 DelegateCommand 物件的時候,可以使用兩種建構式。其中,DelegateCommand(Action executeMethod) 只用來定義該命令要執行的內容,而這個 DelegateCommand(Action executeMethod, Func<bool> canExecuteMethod) 則可以定義何時這個命令可以使用。
        //
        // 摘要:
        //     Creates a new instance of Prism.Commands.DelegateCommand with the System.Action
        //     to invoke on execution.
        //
        // 參數:
        //   executeMethod:
        //     The System.Action to invoke when System.Windows.Input.ICommand.Execute(System.Object)
        //     is called.
        public DelegateCommand(Action executeMethod);
        //
        // 摘要:
        //     Creates a new instance of Prism.Commands.DelegateCommand with the System.Action
        //     to invoke on execution and a Func to query for determining if the command can
        //     execute.
        //
        // 參數:
        //   executeMethod:
        //     The System.Action to invoke when System.Windows.Input.ICommand.Execute(System.Object)
        //     is called.
        //
        //   canExecuteMethod:
        //     The System.Func`1 to invoke when System.Windows.Input.ICommand.CanExecute(System.Object)
        //     is called
        public DelegateCommand(Action executeMethod, Func<bool> canExecuteMethod);
在這裡,首先定義一個 DelegateCommand,並且產生兩個委派方法,而在 canExecuteMethod 委派方法,僅回傳 是否啟用
這個屬性 是否啟用 當有值設定的時候,會去呼叫 切換到新頁面Command.RaiseCanExecuteChanged(),也就是會同步更新按鈕是否可以使用。
        #region 是否啟用
        private bool _是否啟用=true;
        /// <summary>
        /// 是否啟用
        /// </summary>
        public bool 是否啟用
        {
            get { return this._是否啟用; }
            set { this.SetProperty(ref this._是否啟用, value); 切換到新頁面Command.RaiseCanExecuteChanged(); }
        }
        #endregion

        private readonly INavigationService _navigationService;
        public DelegateCommand 切換到新頁面Command { get; private set; } 

        public MainPageViewModel(INavigationService navigationService)
        {

            _navigationService = navigationService;
            切換到新頁面Command = new DelegateCommand(切換到新頁面, Can切換到新頁面);
        }

        private bool Can切換到新頁面()
        {
            return 是否啟用;
        }

        private void 切換到新頁面()
        {
            _navigationService.NavigateAsync("NewPage");
        }

沒有留言:

張貼留言