我可以将 WPF ComboBox 控件的可见性绑定到从命令获得的项目的存在/不存在吗? [关闭]
Posted
技术标签:
【中文标题】我可以将 WPF ComboBox 控件的可见性绑定到从命令获得的项目的存在/不存在吗? [关闭]【英文标题】:Can I bind the visibility of a WPF ComboBox control to the presence/absence of items obtained from a Command? [closed] 【发布时间】:2021-09-16 07:00:03 【问题描述】:我能否将 WPF ComboBox
控件的可见性绑定到从填充ComboBox
的ItemsSource
属性的Command
获得的项目的存在/不存在?简而言之,在这样的情况下:
<ComboBox ItemsSource="Binding MyCommand.Result, Mode=OneWay" Visibility="..." />
我可以将Visibility
属性的值绑定到MyCommand.Result
中是否存在项目以相应地隐藏/显示它吗?
【问题讨论】:
是的,使用 IValueConverter 你的意思是if ItemsSource == null; comboBox.hide()
等价物吗?
@LeiYang 是的。我的问题是,当我调试时,在代码隐藏中我得到 0 作为ComboBox.Items
的Count
属性。
您已经说过 bind 这个词,但您似乎尝试以代码隐藏的方式进行操作。另外,我很少看到MyCommand.Result
,你在哪里看到这样的模式和任何好处?
@LeiYang 这是我公司前段时间写的代码……
【参考方案1】:
您可以将Style
与绑定到源属性的DataTrigger
一起使用,例如:
<ComboBox ItemsSource="Binding MyCommand.Result, Mode=OneWay">
<ComboBox.Style>
<Style TargetType="ComboBox">
<Style.Triggers>
<DataTrigger Binding="Binding MyCommand.Result.Count" Value="0">
<Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>
</Style.Triggers>
</Style>
</ComboBox.Style>
</ComboBox>
或者您可以绑定到控件本身的HasItems
属性:
<ComboBox ItemsSource="Binding MyCommand.Result, Mode=OneWay">
<ComboBox.Style>
<Style TargetType="ComboBox">
<Style.Triggers>
<Trigger Property="HasItems" Value="False">
<Setter Property="Visibility" Value="Collapsed" />
</Trigger>
</Style.Triggers>
</Style>
</ComboBox.Style>
</ComboBox>
【讨论】:
ComBox 保持不变,不会消失。 使用什么代码截图?试试第二个?如果第一个失败,则说明您的绑定有问题。第二个应该无论如何都可以工作。它对我有用。以上是关于我可以将 WPF ComboBox 控件的可见性绑定到从命令获得的项目的存在/不存在吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章