Как я могу выборочно установить «Видимость» TabItem через DataBinding / Triggers
-
08-07-2019 - |
Вопрос
У меня есть вкладка, которая должна быть скрыта, если для свойства (BlahType) установлено значение 1 и показано, если установлено значение 0. Это то, что я ХОЧУ сделать:
<TabItem Header="Blah">
<TabItem.Triggers>
<DataTrigger Binding="{Binding BlahType}" Value="0">
<Setter Property="TabItem.Visibility" Value="Hidden" />
</DataTrigger>
</TabItem.Triggers>
</TabItem>
Проблема в том, что я получаю эту ошибку:
"Triggers collection members must be of type EventTrigger"
Если вы погуглите эту ошибку, вы увидите, что Доктор. WPF объясняет ошибку . Есть ли чистый способ сделать то, что я пытаюсь достичь здесь?
Решение
Я считаю, что коллекция элемента управления Triggers в настоящее время поддерживает только EventTriggers. Если вы хотите использовать DataTrigger, просто поместите его в стиль, например:
<TabItem Header="Blah">
<TabItem.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding BlahType}" Value="0">
<Setter Property="TabItem.Visibility" Value="Hidden" />
</DataTrigger>
</Style.Triggers>
</Style>
</TabItem.Style>
</TabItem>
Другие советы
Ну, вы не можете сделать это с помощью триггеров (если только вы не находитесь внутри DataTemplate, ControlTemplate или Style).
Вы можете сделать это с помощью привязки, вам нужно написать собственный ValueConverter, который будет переводить между 0/1 и Visible / Hidden, а затем вы можете связать свойство Visibility со свойством BlhaType.
Или вы можете просто установить видимость в коде и отказаться от подхода, основанного на XAML (то, что я бы сделал).