MultiDataTrigger 使堆栈面板子项可见并折叠

MultiDataTrigger make stack panel children visible and colappsed

我有几个属性,如果这些值是真的,

如果为真,我希望堆栈面板子项可见。 如果为假则折叠。

据我所知,我需要使用 MultiDataTriigers 和条件。

但是我不确定在哪里放置 setter proppery 到 Collapsed。

正在附加 ma 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>

像下面这样的东西会起作用吗 - 默认为折叠? 我的 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>

注意第二行和可见性下面的行 setter。

您可以使用 MultiBinding 绑定到多个属性,并且仅当转换器 class 实现 IMultiValueConverter 接口 [=15= 时才将 StackPanel 的可见性 属性 设置为可见] 真:

<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>