2015-01-16 3 views
0

Я это связывание, которые мы используем, чтобы выборочно отобразить/скрыть элементы:Преобразовать Это Связывание MultiDataTrigger Связывание

<Binding XPath="InputFileIsNeeded"> 
    <Binding.Converter> 
     <tl:IsEnabledToStringConverter 
      DisabledValue="Collapsed" 
      EnabledValue="Visible" /> 
    </Binding.Converter> 
</Binding> 

теперь у меня есть элемент, который мне нужно, чтобы выборочно показать/скрыть на основе выше привязкой и привязка к линии аргумента «настройке» команды:

<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.StartArg}" Value="Setup"> 
    <Setter Property="Visibility" Value="Visible" /> 
</DataTrigger> 

мне нужно применить оба этих привязки к следующему поэтому следующему элементу отображается только в режиме «Настройка» и когда "InputFileIsNeeded является истинным:

<Style x:Key="ColumnCountSpinner" TargetType="{x:Type ScrollBar}"> 
     <Setter Property="Stylus.IsFlicksEnabled" Value="false"/> 
     <Setter Property="Width" Value="Auto"/> 
     <Setter Property="MinHeight" Value="25"/> 
     <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>     

     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type ScrollBar}"> 
        <Grid> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition /> 
          <ColumnDefinition /> 
         </Grid.ColumnDefinitions> 
         <Label Content="Column Count:" 
            Grid.Column="0" /> 

         <Border BorderThickness="1" BorderBrush="Gray" Grid.Column="1"> 
          <Grid Margin="2"> 
           <Grid.ColumnDefinitions> 
            <ColumnDefinition /> 
            <ColumnDefinition /> 
           </Grid.ColumnDefinitions> 
           <TextBlock VerticalAlignment="Center" FontSize="12" MinWidth="25" Text="{Binding Value, RelativeSource={RelativeSource TemplatedParent}}" Grid.Column="0" /> 
           <Grid Grid.Column="1" x:Name="GridRoot" Width="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}" Background="{TemplateBinding Background}"> 
            <Grid.RowDefinitions> 
             <RowDefinition MaxHeight="18"/> 
             <RowDefinition Height="0.00001*"/> 
             <RowDefinition MaxHeight="18"/> 
            </Grid.RowDefinitions> 
            <RepeatButton x:Name="DecreaseRepeat" Command="ScrollBar.LineDownCommand" Focusable="False"> 
             <Grid> 
              <Path x:Name="DecreaseArrow" Stroke="{TemplateBinding Foreground}" StrokeThickness="1" Data="M 0 4 L 8 4 L 4 0 Z"/> 
             </Grid> 
            </RepeatButton> 
            <RepeatButton Grid.Row="2" x:Name="IncreaseRepeat" Command="ScrollBar.LineUpCommand" Focusable="False"> 
             <Grid> 
              <Path x:Name="IncreaseArrow" Stroke="{TemplateBinding Foreground}" StrokeThickness="1" Data="M 0 0 L 4 4 L 8 0 Z"/> 
             </Grid> 
            </RepeatButton> 
           </Grid> 
          </Grid> 
         </Border> 
        </Grid> 

       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 

У меня возникли трудности с привязкой XPath к MultiDataTrigger. Я попытался следовать, но получить две ошибки (1) Ожидаемые '}' (на «XPath =») и (2) я, очевидно, не могу использовать здесь, поскольку нет определенного элемента (я думаю, что это было бы внутри элемента Condition).

Может кто-нибудь показать мне, как связать эти два свойства с помощью MultiDataTrigger или какого-либо другого механизма?

+1

Можете ли вы опубликовать обязательный XAML, который вы уже пробовали? –

+1

Не могли бы вы создать класс «IMultiValueConverter», который будет использовать как «Setup», так и «InputFileIsNeded» в качестве параметров и соответственно вернуть значение «Видимость»? –

+0

Если вы нашли ответ на свой вопрос, то пост - это ответ, а не редактирование его в самом вопросе. Это также укажет на то, что вопрос имеет ответ в списке вопросов. – Servy

ответ

0

(Следующая информация была предоставлена ​​автором вопроса в качестве редактирования.)

Я нашел пример, что я был в состоянии изменить в моем конкретном случае. В Стиль добавляется следующее:

<Style.Triggers> 
    <MultiDataTrigger> 
     <!-- Condition for 'Setup' and InputFileIsNeeded = true --> 
     <MultiDataTrigger.Conditions> 
      <Condition Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.StartArg}" Value="Setup" /> 
      <Condition Binding="{Binding XPath=InputFileIsNeeded}" Value="true" /> 
     </MultiDataTrigger.Conditions> 
    </MultiDataTrigger> 
<Style.Triggers>