XAML in Xamarin.Forms 基礎篇 電子書

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

Xamarin.Forms 快速入門 電子書

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

2017/02/20

Xamarin Button 的 Command / CommandParameter 綁定與 IsEnabled 的問題測試

在這個範例中,我們需要來進行測試這個需求:
對於 Button 按鈕,我們需要使用 Command 來綁定 ViewModl 上的 ICommand 的物件,並且需要使用 CommandParameter 取得當時綁定的物件內容,而且,需要使用 ViewModel 內的某個屬性,綁定到這個按鈕上的 IsEnabled 屬性,這是要做到可以透過 ViewModel 來控制這個按鈕是否可以使用。
不過,在 Xamarin.Forms 中,若您是在底下的情境,上述的動作將會失敗。
這在這使用情境中,我們使用了 Source 來指定需要綁定物件的來源,並且,CommandParameter 使用了 Binding . 來綁定當時的物件;在這個情況之下,這個 XAML 中的 IsEnable 屬性綁定就會失敗,這個屬性值永遠為 True。
        <Button 
            Text="3 命令綁定、CmdPara(.)、Source"
            Command="{Binding Path=BindingContext.按鈕命令綁定測試Command, Source={x:Reference ThisPage}}"
            CommandParameter="{Binding .}"
            IsEnabled="{Binding 按鈕命令綁定測試狀態}"/>
想要解決這個問題,需要使用 System.Windows.Input.ICommand 提供的 CanExecute 委派方法來解決。

專案原始碼

執行範例

沒有留言:

張貼留言