我希望有一个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>
答案 0 :(得分:1)
您可能会重写与
相同的内容<DataTrigger Binding="{Binding ElementName=cbPictureInPicture, Path=SelectedItem.CodeText}" Value="Yes">
<Setter Property="Visibility" Value="Hidden"/>
</DataTrigger>
假设组合框绑定到其项目具有CodeText属性的集合。所以SelectedItem.CodeText将指向相同的。
此外,可能不需要设置<Setter Property="Visibility" Value="Visible" />
,因为它是默认值。它在这种情况下没有任何影响,只是可以删除一些额外的代码行。
答案 1 :(得分:1)
您还可以使用转换器并直接绑定到PictureInPicture
属性:
<StackPanel Visibility="{Binding PictureInPicture, Converter={StaticResource myVisibilityConverter}}"/>
<Label>Picture in Picture is used</Label>
(...)
</StackPanel>
答案 2 :(得分:-2)