C# 如何接近项目计数检查器

C# 如何接近项目计数检查器,c#,.net,wpf,xaml,user-interface,C#,.net,Wpf,Xaml,User Interface,我正在尝试创建一个触发器,以在没有项目时禁用combobox下拉按钮。这是我到目前为止尝试过的XAML代码,但是我不确定如何检测组合框中是否包含任何项目,以及如何禁用专门下拉列表的按钮 <Style TargetType="ComboBox"> <Setter Property="Template"> <Setter.Value> <ControlTempla

我正在尝试创建一个触发器,以在没有项目时禁用combobox下拉按钮。这是我到目前为止尝试过的XAML代码,但是我不确定如何检测组合框中是否包含任何项目,以及如何禁用专门下拉列表的按钮

<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;