c# - StackPanel 可见性取决于 Combobox 选择

标签 c# wpf xaml mvvm combobox

我想要一个 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>

假设组合框绑定(bind)到其项目具有 CodeText 属性的集合。所以 SelectedItem.CodeText 将指向相同。

此外,可能不需要设置 <Setter Property="Visibility" Value="Visible" />因为它是默认值。在这种情况下,它没有任何效果,只是可以删除一些额外的代码行。

关于c# - StackPanel 可见性取决于 Combobox 选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26251318/

相关文章:

c# - xslt 转换的正确语法

c# - 无法打开登录请求的数据库 "test"。登录失败。用户 'xyz\ASPNET' 登录失败

c# - Linq to XML 未获取所有节点

c# - 无法从 C# 中的线程类继承?

wpf - 为什么在 Expression Blend 4 中,对于简单的 <FixedDocument>,我会得到 "The property ' Pages 没有可访问的 setter”?

c# - UpdateSourceTrigger=PropertyChanged 和转换器

c# - 当 showdialogwindow 阻止我尝试访问的窗口时,是否有事件或我可以使用的东西

c# - 在先前在应用程序资源中定义的新窗口中覆盖边框样式(可能是错误?)

wpf - 是否可以在 xaml 中绑定(bind)后添加更多字符?

silverlight - 如何在 Silverlight 中调试 XAML 解析错误?