gpt4 book ai didi

禁用时未显示任何选择的 WPF ComboBox (IsEnabled == false)

转载 作者:行者123 更新时间:2023-12-05 05:29:01 25 4
gpt4 key购买 nike

我正在考虑不同的方法让 WPF ComboBox 显示空白,就好像当 IsEnabled 设置为 false 时没有选择任何内容一样。像往常一样,我尝试这样做而不必为 ComboBox 重新定义整个控件模板,这一直是我与 WPF 的斗争。如果有人有比重新定义整个 ComboBox 控件模板更优雅的解决方案,请告诉我。

我尝试做的原因是我有一个代表“全部”选项的 CheckBox 并且在选中它时禁用用于只挑选一个单独的项目。如果我的 CheckBox 被选中,用户有时会混淆看到 ComboBox 中剩余的值,因为该值在该 UI 状态下没有意义。

另一个要求是解决方案不能修改 ComboBoxSelectedValueSelectedIndexSelectedItem 值因为我想在用户取消选中“全部”CheckBox 的情况下保留先前选择的项目。

基于HCL答案的解决方案:

<ComboBox IsEnabled="{Binding ElementName=myCheckBox, Path=IsChecked}"
ItemsSource="{Binding Path=MyItems}"
SelectedValue="{Binding Path=MySelectedItem}">
<ComboBox.ItemTemplate>
<DataTemplate>
<ContentControl x:Name="content" Content="{Binding MyItemDescription}" />
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=ComboBox}, Path=IsEnabled}"
Value="False">
<Setter TargetName="content"
Property="Visibility"
Value="Hidden" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>

最佳答案

你可以用触发器做一些事情:

当框被禁用时,尝试将 ItemTemplate 设置为空的 DataTemplate。这将影响所选项目的呈现并因此将其隐藏。

另一个简单但不是很好的解决方案是将前景色设置为与背景色相同。

关于禁用时未显示任何选择的 WPF ComboBox (IsEnabled == false),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4740757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com