[英]WPF: MVVM - disable button if command is null
我對某些命令有約束力:
<Button Command="{Binding Save}" />
保存是可以從列表中選擇的某個對象的命令。 在初始狀態下,沒有任何選定的對象,因此綁定不起作用,並且不會調用CanExecute 。 如何使用MVVM禁用此按鈕?
解決方案: WPF / MVVM:當UserControl后面的ViewModel尚未初始化時,禁用Button的狀態?
伙計們,感謝您的回答,並對不起重復的問題。
定義始終向CanExecute返回false的命令。 在全局位置聲明它,例如在App.Xaml中。 您可以將此empty-command指定為所有命令綁定的FallbackValue
,您希望首先使用null值。
<Button Command="{Binding Save,FallbackValue={StaticResource KeyOfYourEmptyCommand}}" />
您可以在XAML中創建一個觸發器,當命令等於x:Null
時禁用Button。
在這個問題的答案中可以找到一個例子: WPF / MVVM:當UserControl后面的ViewModel尚未初始化時,禁用Button的狀態?
我不確定你能做到這一點。 但是,另一種方法是使用基本ICommand初始化Command對象,其中CanExecute只返回False。 然后,當您准備好使用實際命令時,可以替換它。
看看Null對象模式
創建一個NullToBooleanConverter並將IsEnabled
屬性綁定到命令,通過轉換器運行它:
class NullToBooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return value != null;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
然后
<UserControl.Resources>
<Extentions:NullToBooleanConverter x:Key="NullToBooleanConverter" />
</UserControl.Resources>
<Button Content="Hello" IsEnabled="{Binding Save, Converter={StaticResource NullToBooleanConverter}}" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.