Combobox ItemSource issue

本文关键字:issue ItemSource Combobox | 更新日期: 2023-09-27 18:16:57

我有以下代码

<ComboBox x:Name="hotelComboBox"
          ItemsSource="{Binding HotelCollection}"
          SelectedItem="{Binding ActiveHotel,Mode=TwoWay}"
          Style="{StaticResource ComboBoxStyle}"
          HorizontalAlignment="Center"
          Visibility="{Binding IsFirstTimeUser, ConverterParameter=Inverse, Converter={StaticResource BooleanToVisibilityConverter}}">
    <TextBlock Text="Select Something"
               IsHitTestVisible="False">
        <TextBlock.Style>
            <Style TargetType="TextBlock">
                <Setter Property="Visibility"
                        Value="Hidden" />
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ElementName=hotelComboBox,Path=SelectedItem}"
                                 Value="{x:Null}">
                        <Setter Property="Visibility"
                                Value="Visible" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </TextBlock.Style></TextBlock>
</ComboBox>

当我在组合框中添加TextBlock时,我得到一个错误,如"项目集合必须在使用ItemsSource之前为空"。

如果我删除项目源绑定,我没有得到这个错误。但我需要使用这个项目源。任何选项?

谢谢

Combobox ItemSource issue

您不能在使用ItemsSource的同时在XAML中定义自定义项。

我猜,你要找的是ComboBoxItemTemplate属性

原因是Items是任何ItemsControl(如ComboBox)的内容属性。因此,当您在ComboBox中放入任何元素时,它会自动添加到Items集合中。在您的情况下,您需要做以下事情之一:

  • 在ComboBox附近声明TextBlock
  • 使用ItemTemplate属性
  • 停止使用ItemsSource,使用Items代替