我正在尝试创建一个带有可更新集合的组合框。如果集合绑定到组合框为空,我将在组合框内显示特殊内容。我曾尝试设置TargetNullValue参数,但它的显示内容不是我所期望的。
TargetNullValue
<ComboBox ItemsSource="{Binding MyCollection, UpdateSourceTrigger=PropertyChanged, TargetNullValue='No Items'}"/>
我现在拥有的
我的期望
zbdgwd5y1#
您可以在ComboBox的Template没有项时替换它,例如,使用TextBlock或任何其他可视元素。
<ComboBox> <ComboBox.Style> <Style TargetType="ComboBox"> <Style.Triggers> <Trigger Property="HasItems" Value="False"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="ComboBox"> <TextBlock Text="No Items"/> </ControlTemplate> </Setter.Value> </Setter> </Trigger> </Style.Triggers> </Style> </ComboBox.Style> </ComboBox>
au9on6nz2#
试试这个(我不能自己检查--我“手边”没有电脑):
<ComboBox> <ComboBox.Resources> <CompositeCollection x:Key="noItems"> <sys:String>No Items</sys:String> </CompositeCollection> </ComboBox.Resources> <ComboBox.Style> <Style TergetType="ComboBox"> <Setter Property="ItemsSource" Value="{Binding MyCollection}"/> <Style.Triggers> <DataTrigger Binding="{Binding MyCollection.Count}" Value="0"> <Setter Property="ItemsSource" Value="{DynamicResource noItems}"/> <Setter Property="SelectedIndex" Value="0"/> </DataTrigger> </Style.Triggers> </Style> <ComboBox.Style> </ComboBox>
或TargetNullValue的此类变量:
<ComboBox> <ComboBox.ItemsSource> <Binding Path="MyCollection"> <Binding.TargetNullValue> <CompositeCollection> <sys:String>No Items</sys:String> </CompositeCollection> </Binding.TargetNullValue> </Binding> </ComboBox.ItemsSource> </ComboBox>
2条答案
按热度按时间zbdgwd5y1#
您可以在ComboBox的Template没有项时替换它,例如,使用TextBlock或任何其他可视元素。
au9on6nz2#
试试这个(我不能自己检查--我“手边”没有电脑):
或TargetNullValue的此类变量: