Лучший способ сделать булеву или для видимости - PullRequest
2 голосов
/ 07 октября 2010

У меня есть элемент управления, который я хочу видеть только в том случае, если хотя бы одно из свойств возвращает значение true. Я собирался реализовать свой собственный BooleanOrToVisibilityMultiConverter, но мне кажется, что должен быть лучший (и совершенно очевидный) способ сделать это.

Пожалуйста, просветите меня!

Ответы [ 2 ]

5 голосов
/ 07 октября 2010

MVVM-способ сделать это - вернуть из вашей модели один логический объект, который содержит логику, которая определяет, должен ли быть виден ваш элемент управления.

Обычно, если у меня есть такая логика, этопотому что есть некоторая концепция домена, которую я пытаюсь выразить - например:

  • она находится в этой стране
  • она готова к обработке
  • она все еще нуждается в некоторой работе
  • это полный комплект
  • все авторы приписаны

и т. Д.

Сохраняя логику, которая ведет к концепции предметной области, изGui, вы облегчаете тестирование и обслуживание.В противном случае вы в конечном итоге будете воспроизводить ту же логику везде, где используете концепцию домена, а в Xaml это не так просто.

3 голосов
/ 12 октября 2010

Что ж, использование конвертера - один из вариантов, и вы также можете использовать Multi Data Trigger (ни одно решение не лучше, зависит от вашего сценария).

Вам необходимо установить это в коллекции триггеров вашего элемента управления (или DataTemplate):

    <DataTemplate.Triggers>
        <MultiDataTrigger>
            <MultiDataTrigger.Conditions>
                <Condition Binding="{Binding IsInstalled}" Value="True"/>
                <Condition Binding="{Binding IsOwned}" Value="False" />
            </MultiDataTrigger.Conditions>
            <MultiDataTrigger.Setters>
                <Setter TargetName="SkullImage" Property="Visibility" Value="Visible" />
            </MultiDataTrigger.Setters>
        </MultiDataTrigger>
    </DataTemplate.Triggers>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...