绑定按钮的IsEnabled到切换按钮UWP的IsChecked
我试图将按钮的enabled属性绑定到UWP中另一个按钮的checked属性绑定按钮的IsEnabled到切换按钮UWP的IsChecked,uwp,uwp-xaml,Uwp,Uwp Xaml,我试图将按钮的enabled属性绑定到UWP中另一个按钮的checked属性 <CommandBar DefaultLabelPosition="Right" VerticalContentAlignment="Center"> <AppBarButton Icon="Add" Label="Add Images" Command="{x:Bind ViewModel.AddImagesCommand}"/> <
<CommandBar DefaultLabelPosition="Right" VerticalContentAlignment="Center">
<AppBarButton Icon="Add" Label="Add Images" Command="{x:Bind ViewModel.AddImagesCommand}"/>
<AppBarSeparator/>
<AppBarToggleButton x:Name="buttonSelect" Label="Select"/>
<AppBarButton Icon="SelectAll" Label="SelectAll" Click="{x:Bind gridViewInputImages.SelectAll}" IsEnabled="{x:Bind buttonSelect.IsChecked}"/>
</CommandBar>
但是,我得到一个错误:绑定赋值无效:无法直接将类型“System.Nullable(System.Boolean)”绑定到“System.Boolean”。使用强制转换、转换器或函数绑定更改类型
我想我可以通过绑定到ViewModel中的中间值来解决这个问题,但是在XAML中有没有办法做到这一点?您不应该将可为null的值绑定到bool,因为bool不是null
IsEnabled值为
bool
,IsChecked值为bool?
。您应该编写一个convert to convertbool?
to bool。在XAML中使用它,如下所示:
<CommandBar
DefaultLabelPosition="Right"
VerticalContentAlignment="Center">
<AppBarButton
Icon="Add"
Label="Add Images"
Command="{x:Bind ViewModel.AddImagesCommand}" />
<AppBarSeparator />
<AppBarToggleButton
x:Name="buttonSelect"
Label="Select" />
<AppBarButton
Icon="SelectAll"
Label="SelectAll"
Click="{x:Bind gridViewInputImages.SelectAll}"
IsEnabled="{Binding IsChecked, ElementName=buttonSelect, Converter={StaticResource NullBoolConverter}}" />
</CommandBar>
public class NullBoolConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
if (value == null)
return false;
return (bool)value;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
在页面资源中声明转换器:
<converters:NullBoolConverter
x:Key="NullBoolConverter"/>