0

I have several properites that if that values are true,

I want the stack panel children to be visible if true. and collapsed if false.

as far as I understood I need to use MultiDataTriigers and condition.

however I am not sure where to put the setter protpery to Collapsed.

ataching ma XAML code:

<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>
  • Seems you found an answer, but here's some remark: if your `V_converter` is returning a visibility, don't trigger anything, just go ``. – grek40 Jan 22 '17 at 13:02

2 Answers2

1

You could bind to several properties using a MultiBinding and set the Visibility property of the StackPanel to Visible only if the converter class that implements the IMultiValueConverter interface returns 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>
mm8
  • 163,881
  • 10
  • 57
  • 88
0

Would something like the following work - Defaulting to collapsed? My WPF is a bit rusty but something like the following:

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

Note the second line and the line below the Visibility setter.

Blam
  • 2,888
  • 3
  • 25
  • 39