[英]StackPanel visibility depending on Combobox selection
我想让一个StackPanel的可见性取决于Combobox的选择。 不幸的是,下面的XAML无法正常工作。
我找到了一个具有新属性的解决方案,该解决方案将在Combobox选择项的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>
您可能会改写为
<DataTrigger Binding="{Binding ElementName=cbPictureInPicture, Path=SelectedItem.CodeText}" Value="Yes">
<Setter Property="Visibility" Value="Hidden"/>
</DataTrigger>
假定组合框绑定到其项目具有CodeText属性的集合。 因此SelectedItem.CodeText将指向相同的对象。
另外,可能不需要设置<Setter Property="Visibility" Value="Visible" />
因为它是默认值。 在这种情况下,它没有任何作用,只是可以删除一些额外的代码行。
您还可以使用转换器并将其直接绑定到PictureInPicture
属性:
<StackPanel Visibility="{Binding PictureInPicture, Converter={StaticResource myVisibilityConverter}}"/>
<Label>Picture in Picture is used</Label>
(...)
</StackPanel>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.