我想显示包含一个或多个元素的列表。对于几种元素,自然选择是组合框。对于一个元素,我希望它显示为文本框。我目前的解决方案是在同一位置同时显示组合框和文本框,并根据列表中的元素数量隐藏其中一个(见下文)。
我想知道是否有更优雅的解决方案,就像告诉组合框隐藏其下拉箭头,以防列表的大小等于1。
Message cxfMessage = cxfExchange.getInMessage();
cxfMessage.put(SecurityContext.class, null);
super.populateExchangeFromCxfRequest(cxfExchange, camelExchange);
答案 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}"