如果列表大小等于1,如何隐藏组合框中的下拉箭头?

时间:2017-12-28 11:03:34

标签: wpf

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

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

Message cxfMessage = cxfExchange.getInMessage();    
cxfMessage.put(SecurityContext.class, null);        
super.populateExchangeFromCxfRequest(cxfExchange, camelExchange);

1 个答案:

答案 0 :(得分:1)

您可以删除TextBox,而是根据内部项目的数量更改ComboBox的IsEnabled状态。另外,我相信你实际上想要一个TextBlock而不是TextBox,因此用户无法更改内部文本。

所以,根据你的例子和我的建议:

    <ComboBox
        HorizontalAlignment="Center" VerticalAlignment="Center"
        ItemsSource="{Binding List}"
        SelectedItem="{Binding ListSelected}"
        IsEnabled="{Binding IsComboEnabled}" />

您不再需要可见性部分,因为它始终是可见的。

代码背后:

public bool IsComboEnabled
{
    get
    {
        return List.Count > 1 ? true : false;
    }
}

或者,我想你可以让自己更轻松。只需用这个覆盖Visibility属性(并以任一方式删除TextBox控件):

IsEnabled="{Binding IsList}"