将int属性绑定到bool UIElement

Sim*_*ley 0 c# wpf xaml

我在XAML中具有以下绑定,其中XAML IsEnabled的类型为bool,并且Length是类型为int的Array的属性。

<Button
        Content="Press Me"
        IsEnabled="{Binding MyArray.Length, FallbackValue=False}">
</Button>
Run Code Online (Sandbox Code Playgroud)

它实现了我想要的功能,当数组长度为0时,它禁用,当数组包含启用元素时,它禁用。

但是,我没想到它会起作用,因为您不能在C#中将int隐式转换为bool。

这样安全吗?

Cle*_*ens 5

似乎没有任何地方记录这种行为,因此您不应该依赖它。

一个安全而简单的解决方案是使用带有DataTrigger的样式:

<Button Content="Press Me">
    <Button.Style>
        <Style TargetType="Button">
            <Style.Triggers>
                <DataTrigger Binding="{Binding MyArray.Length}" Value="0">
                    <Setter Property="IsEnabled" Value="False"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>
Run Code Online (Sandbox Code Playgroud)