2015-02-06 2 views
0

Я пытаюсь связать Observablecollection<T> с ComboBox. ComboBox имеющий DatatempleteКак связать Observablecollection <T> с combobox в wpf

<ComboBox Width="150" Margin="20,0,0,5" Name="cbSelection" Height="20" 
       BorderThickness="2" BorderBrush="Black" 
       SelectedIndex="0" DataContext="{Binding AdComboBox}"> 
       <ComboBox.ItemTemplate> 
        <DataTemplate> 
         <Grid> 
          <Grid.ColumnDefinitions> 
           <ColumnDefinition Width="1*"/> 
           <ColumnDefinition Width="1*"/> 
           <ColumnDefinition Width="1*"/> 
          </Grid.ColumnDefinitions> 
          <TextBlock Grid.Column="0" Text="{Binding XPath=LOC, Mode=OneWay}" Margin="5,0,5,0"/> 
          <TextBlock Grid.Column="1" Text="{Binding XPath=PUB, Mode=OneWay}" Margin="0,0,5,0"/> 
          <TextBlock Grid.Column="2" Text="{Binding XPath=EDI, Mode=OneWay}" Margin="0,0,5,0"/> 
         </Grid> 
        </DataTemplate> 
       </ComboBox.ItemTemplate> 
      </ComboBox> 

но не получить данные в ComboBox , что происходит не так заранее спасибо

+5

Bind Combobox.ItemsSource свойство –

+0

вы должны связываться с пути и не XPath – blindmeis

ответ

2

Используйте ItemsSource в ComboBox, чтобы указать на ObservableCollection<T>. Также: используйте Path, а не XPath, который используется для привязки к XML-документам.

<ComboBox Width="150" Margin="20,0,0,5" Name="cbSelection" Height="20" 
      BorderThickness="2" BorderBrush="Black" 
      ItemsSource="{Binding AdComboBox}" 
      SelectedIndex="0"> 
    <ComboBox.ItemTemplate> 
     <DataTemplate> 
      <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="1*"/> 
        <ColumnDefinition Width="1*"/> 
        <ColumnDefinition Width="1*"/> 
       </Grid.ColumnDefinitions> 
       <TextBlock Grid.Column="0" 
          Text="{Binding Path=LOC, Mode=OneWay}" 
          Margin="5,0,5,0"/> 
       <TextBlock Grid.Column="1" 
          Text="{Binding Path=PUB, Mode=OneWay}" 
          Margin="0,0,5,0"/> 
       <TextBlock Grid.Column="2" 
          Text="{Binding Path=EDI, Mode=OneWay}" 
          Margin="0,0,5,0"/> 
      </Grid> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox> 

Side Примечание: Вы можете переименовать коллекцию что-то более функциональным, а не AdComboBox. НАПРИМЕР, Объявления Поскольку это не ComboBox, но это коллекция объявлений

+0

@peterduniho (?) - Исправлено, спасибо! –

Смежные вопросы