2017-01-22 5 views
0

У меня есть несколько Properites, что если что значения являются истинными,MultiDataTrigger сделать стек панели дети видны и colappsed

Я хочу стек панель дети, чтобы быть видимыми, если оно истинно. и сбрасывается, если false.

Насколько я понял, мне нужно использовать MultiDataTriigers и условие.

однако я не уверен, где поставить сеттер protpery на Collapsed.

ataching ма код 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> 
+0

Кажется, вы нашли ответ, но вот некоторое замечание: если ваш 'V_converter' возвращает видимость, ничего не запускайте, просто перейдите' '. – grek40

ответ

1

Вы можете связать несколько свойств с помощью MultiBinding и установите Visibility свойства StackPanel Видимый только если преобразователь класса, который реализует интерфейс IMultiValueConverter возвращает истину:

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

, когда я копирую этот код, когда-либо рушится. и не влияет на их свойства. –

+0

Как ваш класс преобразователя реализован? Верно ли это, когда StackPanel должен быть видимым? – mm8

+0

it return System.Windows.Visibility.Visible –

0

Будет что-то вроде следующей работы - Дефолт к свернутым? Мой 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> 

Обратите внимание на второй линии и линии ниже видимости сеттера.

+0

, когда я копирую этот код, когда-либо рушится. и не влияет на их свойства. –

Смежные вопросы