2015-10-09 372 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財產
  • 停止並使用項目,而不是