在這個範例中,我們需要來進行測試這個需求:
對於 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
委派方法來解決。