2014-10-08 22 views
1

我想有一个StackPanel谁的知名度应该取决于组合框的选择。不幸的是下面的XAML不起作用。StackPanel的可视性取决于组合框选择

我发现,这将在组合框中选择的PropertyChanged事件来设置,但我宁愿这个严格的XAML解决方案的新属性的解决方案。

如何解决这个任何提示?

<StackPanel> 
    <Label>Picture in Picture function</Label> 
    <ComboBox Name="cbPictureInPicture" ItemsSource="{Binding Path=PictureInPictureCodeList, Mode=OneWay}" DisplayMemberPath="CodeText" 
     SelectedValuePath="CodeID" SelectedValue="{Binding Path=PictureInPicture, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" /> 
</StackPanel> 
<StackPanel> 
    <StackPanel.Style> 
     <Style TargetType="StackPanel"> 
      <Setter Property="Visibility" Value="Visible" /> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding ElementName=cbPictureInPicture, Path=IsSelected.CodeText}" Value="Yes"> 
        <Setter Property="Visibility" Value="Hidden"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </StackPanel.Style> 
    <Label>Picture in Picture is used</Label> 
    (...) 
</StackPanel> 

回答

1

你也许会重写一样

<DataTrigger Binding="{Binding ElementName=cbPictureInPicture, Path=SelectedItem.CodeText}" Value="Yes"> 
    <Setter Property="Visibility" Value="Hidden"/> 
</DataTrigger> 

假设组合框被绑定到一个集合,其项目具有代码文本属性。所以SelectedItem.CodeText将指向相同。

附加地,可以不需要设置<Setter Property="Visibility" Value="Visible" />,因为它是默认值。它并没有在这种情况下,代码只是一些额外的线,可以删除任何影响。

+0

我用IsSelected代替的SelectedItem。感谢提示! – RobaL 2014-10-08 07:56:18

+0

太棒了!快乐编码:) – pushpraj 2014-10-08 08:12:13

-2
  1. 创建标志并在堆栈面板可见性转换器中传递此标志。
  2. 在转换器标志的基础上做出决定stackpanel可见/隐藏任何
  3. 如果根据您的要求选择了值,将此平面设置为组合框选择更改事件。
1

你也可以使用一个转换器和直接绑定到PictureInPicture属性:

<StackPanel Visibility="{Binding PictureInPicture, Converter={StaticResource myVisibilityConverter}}"/> 
    <Label>Picture in Picture is used</Label> 
    (...) 
</StackPanel> 
相关问题