用自定义类设置控件的可见性
本文关键字:可见性 控件 设置 自定义 | 更新日期: 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
,以返回您想要评估的布尔结果(在Children
和Value1
, 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();
}
}