Wpf 在案例列表大小等于1时,如何隐藏组合框中的下拉箭头?

Wpf 在案例列表大小等于1时,如何隐藏组合框中的下拉箭头?,wpf,Wpf,我想显示包含一个或多个元素的列表。对于一些元素,自然选择是组合框。对于一个元素,我希望它显示为文本框。我目前的解决方案是在同一位置同时显示combobox和textbox,并根据列表中的元素数隐藏其中一个(见下文) 我想知道是否有更优雅的解决方案,比如告诉组合框隐藏其下拉箭头,以防列表大小等于1 <Grid> <ComboBox HorizontalAlignment="Center" VerticalAlignment="Center" ItemsSource

我想显示包含一个或多个元素的列表。对于一些元素,自然选择是组合框。对于一个元素,我希望它显示为文本框。我目前的解决方案是在同一位置同时显示combobox和textbox,并根据列表中的元素数隐藏其中一个(见下文)

我想知道是否有更优雅的解决方案,比如告诉组合框隐藏其下拉箭头,以防列表大小等于1

<Grid>
<ComboBox
    HorizontalAlignment="Center" VerticalAlignment="Center"
    ItemsSource="{Binding List}"
    SelectedItem="{Binding ListSelected}"
    Visibility="{Binding IsList, Converter={StaticResource InverseBoolToHiddenOrVisibleConverter}}"

/>
<TextBox
    HorizontalAlignment="Center" VerticalAlignment="Center"
    Text="{Binding ListSelected}"
    Visibility="{Binding IsList, Converter={StaticResource BoolToHiddenOrVisibleConverter}}"
/>


您可以去掉文本框,而是根据其中的项目数更改组合框的IsEnabled状态。另一方面,我相信您实际上想要的是文本块,而不是文本框,所以用户无法更改其中的文本

因此,根据你的例子和我的建议:

    <ComboBox
        HorizontalAlignment="Center" VerticalAlignment="Center"
        ItemsSource="{Binding List}"
        SelectedItem="{Binding ListSelected}"
        IsEnabled="{Binding IsComboEnabled}" />
或者,我想你可以让自己变得更容易。只需使用以下内容覆盖Visibility属性(并以任意方式删除TextBox控件):


谢谢MaxB。TextBlock确实是我的意图。但是,禁用的组合框看起来与文本块大不相同。我想彻底摆脱组合框的外观,因为当列表大小为1时,这意味着根本没有列表。在发布最终解决方案之前,我实际上试图找到一个隐藏组合框控件上下拉箭头的解决方案,但我发现的一切都太有问题,不值得。一种方法是编辑默认的ComboBox控件,另一种方法是更改系统参数,但我找不到将该系统参数绑定到任何对象的方法。不管怎样,让我们等待一个更有能力的人来做正确的事情谢谢,这将证实我做了正确的事情。
public bool IsComboEnabled
{
    get
    {
        return List.Count > 1 ? true : false;
    }
}
IsEnabled="{Binding IsList}"