用自定义类设置控件的可见性

本文关键字:可见性 控件 设置 自定义 | 更新日期: 2023-09-27 18:08:53

<TextBlock.Visibility>
    <mat:MatcherConverter>
        <mat:Matcher MatchVisibility="Visible" DismatchVisibility="Collapsed">
            <mat:Matcher Value1="{Binding Boolean1}" Value2="True" ComparisonOperator="AND"/>
            <mat:Matcher Value1="{Binding Boolean2}" Value2="True" ComparisonOperator="AND"/>
        </mat:Matcher>
    </mat:MatcherConverter>
</TextBlock.Visibility>

你怎么看一个类,有MarkupExtension作为基类?在这种情况下,它将是MatcherConverter。这个类将递归地遍历所有匹配器,结果是一个布尔值。

用自定义类设置控件的可见性

您可以在Matcher中创建属性TheBooleanResult,以返回您想要评估的布尔结果(在ChildrenValue1, Value2,…)。然后创建一个IValueConverter,它接受Matcher并获得TheBooleanResult并返回您想要的可见性。

public class MatcherConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        Matcher m = (Matcher)value;
        return m.TheBooleanResult ? Visibility.Visible : Visibility.Hidden;
    }
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}