Установите видимость элемента управления с пользовательским классом - PullRequest
0 голосов
/ 15 сентября 2011
<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.Этот класс будет проходить через все совпадения рекурсивно, и в результате получится логическое значение.

1 Ответ

0 голосов
/ 15 сентября 2011

Вы можете создать свойство TheBooleanResult в Matcher, которое будет возвращать логический результат, который вы хотите оценить (для 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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...