2015-10-09 177 views
0

我有以下代码组合框的ItemSource问题

<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 insode组合框,我得到这样的错误“Items集合必须在使用ItemsSource前空的。”

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

感谢

+1

如果您不能发表整个代码(由于它的长度),至少发布有效的代码。在你的标记中,我没有看到关闭标签的组合框,所以很难知道如果该文本框是在它内部还是外部? – niksofteng

+0

是否在代码中设置ComboBox.Items属性? –

+0

@Empereur艾曼仍然是同样的错误,但我仍然需要绑定在那里。 – Joseph

回答

0

不能使用ItemsSource,并在同一时间定义在XAML您的自定义项目。

我想,你正在寻找的东西是ItemTemplate财产ComboBox

0

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

  • 申报的TextBlock
  • 使用的ItemsSource使用ItemTemplate财产
  • 停止并使用项目,而不是