WPF 可见性绑定(bind)到具有多个变量的 bool 表达式

标签 wpf xaml

我有两个 bool 值,我想根据它们的值显示图像,如下所示:

   <Window.Resources>
    <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
</Window.Resources>

<Image Visibility="{Binding (Boolean1 && Boolean2),Converter={StaticResource BooleanToVisibilityConverter}}" />

注意 Boolean1 和 Boolean2 表达式。

最佳答案

XAML 中没有定义 && 运算符,但您可以绑定(bind)到多个属性并使用 IMultiValueConverter:

<Image>
    <Image.Visibility>
        <MultiBinding Converter="{StaticResource YourMultiConverter}">
            <Binding Path="Boolean1" />
            <Binding Path="Boolean2" />
        </MultiBinding>
    </Image.Visibility>
</Image>
<小时/>
public class YourMultiValueConverter : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        bool a = (bool)values[0];
        bool b = (bool)values[1];

        return a && b ? Visibility.Visible : Visibility.Collapsed;
    }

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

或者您可以使用带条件的 Image 样式:

<Image>
    <Image.Style>
        <Style TargetType="Image">
            <Setter Property="Visibility" Value="Collapsed" />
            <Style.Triggers>
                <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding Boolean1}" Value="True" />
                        <Condition Binding="{Binding Boolean2}" Value="True" />
                    </MultiDataTrigger.Conditions>
                    <Setter Property="Visibility" Value="Visible" />
                </MultiDataTrigger>
            </Style.Triggers>
        </Style>
    </Image.Style>
</Image>

关于WPF 可见性绑定(bind)到具有多个变量的 bool 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42342950/

相关文章:

c# - InitializeComponent() 上的自定义控件大小

c# - 抑制系统覆盖,Windows Phone 8.1 (Silverlight)

c# - Windows Phone 应用程序上的矩形 UI?

xaml - 使用 VisualStateManager 对按钮的 ScaleTransform 进行动画处理

xaml - 在 ContentView 中声明转换器会导致空白的 xamarin 表单页面

c# - 如何覆盖 WPF C# 中的内置事件处理程序

wpf - 在 WPF 中对 DataGrid 进行预排序

c# - WPF-如何监视datagrid selecteditem属性更改

wpf - MVVM 模式 - 执行 View 操作

WPF - 在样式中使用 ControlTemplate 资源