MultiDataTrigger делает дочерние панели стека видимыми и свернутыми
У меня есть несколько свойств, которые, если эти значения верны,
Я хочу, чтобы дочерние элементы стека были видны, если это правда. и рухнул, если ложь.
насколько я понял, мне нужно использовать MultiDataTriigers и условия.
однако я не уверен, куда положить сеттер-собственность для Collapsed.
код XAML:
<Style x:Key="ShowHideStyle" TargetType="StackPanel" >
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Value="True">
<Condition.Binding>
<MultiBinding Converter="{StaticResource V_converter }">
<Binding Path="Type"></Binding>
<Binding Path="NodeID"></Binding>
<Binding Path="TLV"></Binding>
</MultiBinding>
</Condition.Binding>
</Condition>
</MultiDataTrigger.Conditions>
<MultiDataTrigger.Setters>
<Setter Property="Visibility" Value="Visible" />
</MultiDataTrigger.Setters>
</MultiDataTrigger>
</Style.Triggers>
</Style>
2 ответа
Решение
Вы можете связать несколько свойств с помощью MultiBinding и установить для свойства Visibility StackPanel значение Visible, только если класс преобразователя, который реализует IMultiValueConverter
интерфейс возвращает true:
<Style x:Key="ShowHideStyle" TargetType="StackPanel">
<!-- default Visibility: -->
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource V_converter}">
<Binding Path="Type" />
<Binding Path="NodeID" />
<Binding Path="TLV" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
Будет ли что-то вроде следующей работы - Дефолт рухнул? Мой WPF немного ржавый, но примерно такой:
<Style x:Key="ShowHideStyle" TargetType="StackPanel" >
<Style.Setters>
<Setter Property="Visibility" Value="Collapsed" />
</Style.Setters>
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Value="True">
<Condition.Binding>
<MultiBinding Converter="{StaticResource V_converter }">
<Binding Path="Type"></Binding>
<Binding Path="NodeID"></Binding>
<Binding Path="TLV"></Binding>
</MultiBinding>
</Condition.Binding>
</Condition>
</MultiDataTrigger.Conditions>
<MultiDataTrigger.Setters>
<Setter Property="Visibility" Value="Visible" />
</MultiDataTrigger.Setters>
</MultiDataTrigger>
</Style.Triggers>
</Style>
Обратите внимание на вторую строку и строку под установщиком видимости.