C# 如何接近项目计数检查器
我正在尝试创建一个触发器,以在没有项目时禁用combobox下拉按钮。这是我到目前为止尝试过的XAML代码,但是我不确定如何检测组合框中是否包含任何项目,以及如何禁用专门下拉列表的按钮C# 如何接近项目计数检查器,c#,.net,wpf,xaml,user-interface,C#,.net,Wpf,Xaml,User Interface,我正在尝试创建一个触发器,以在没有项目时禁用combobox下拉按钮。这是我到目前为止尝试过的XAML代码,但是我不确定如何检测组合框中是否包含任何项目,以及如何禁用专门下拉列表的按钮 <Style TargetType="ComboBox"> <Setter Property="Template"> <Setter.Value> <ControlTempla
<Style TargetType="ComboBox">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ComboBox}">
<ControlTemplate.Triggers>
<Trigger Property="Items.Count" Value="0">
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
这对我很有用:
<ComboBox IsEnabled="{Binding RelativeSource=
{RelativeSource Mode=Self}, Path=ItemsSource.Count}"/>
不过,组合框是在运行时创建的。是否可以将其调整为由项目计数为0触发的触发器?@DotNET测试在运行时更改项目的数量,并且我的代码仍然对我有效,这再次假设
ItemsSource
是一个可观察集合
,由于这将自动触发INotifyPropertyChanged并更新UI(如果不是,您可能需要手动触发)。是的,这是一个可观察的集合,但是如果组合框本身是在运行时生成的,我应该将代码放在何处?@DotNET您可以创建一个做同样事情的样式,在我的代码中添加了一点。组合框仍然没有禁用自身:/
<Style TargetType="ComboBox" x:Key="ComboStyle">
<Setter Property="IsEnabled" Value="{Binding RelativeSource=
{RelativeSource Mode=Self}, Path=ItemsSource.Count}"/>
</Style>
ComboBox cbo = new ComboBox();
cbo.ItemsSource = MyData;
cbo.Style = Resources["ComboStyle"] as Style;