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>

Обратите внимание на вторую строку и строку под установщиком видимости.

Другие вопросы по тегам