2013-11-26 3 views
3

Как следует из названия, я хочу добавить статический элемент в dataBound ComboBox.Комбобокс со статическими и динамическими данными вместе в wpf

Я указал this сообщение.

Databinding выпадающий:

<ComboBox Name="comboBox1" Width="Auto" ItemsSource="{Binding}" /> 

Добавление статических элементов в выпадающем списке:

<ComboBox Text="Is not open"> 
    <ComboBoxItem Name="cbi1">Item1</ComboBoxItem> 
    <ComboBoxItem Name="cbi2">Item2</ComboBoxItem>  
    <ComboBoxItem Name="cbi3">Item3</ComboBoxItem> 
</ComboBox> 

Ведение выше вещи вместе с помощью CompositeCollection:

<ComboBox> 
    <ComboBox.Items> 
     <CompositeCollection> 
      <CollectionContainer Collection="{Binding Source={...whatever...}" /> 
      <ComboBoxItem Name="cbi1">Item1</ComboBoxItem> 
      <ComboBoxItem Name="cbi2">Item2</ComboBoxItem> 
      <ComboBoxItem Name="cbi3">Item3</ComboBoxItem> 
     </CompositeCollection> 
    </ComboBox.Items> 
</ComboBox> 

Но приведенные выше примеры не решить мою проблему.

Я хочу добавить статический элемент к DataBound ComboBox , в котором я использую DataTemplate

Вот мой код для DataBound ComboBox (я не знаю, как добавить статические элементы):

<ComboBox x:Name="cbUnder" ItemsSource="{Binding GroupsAndCorrespondingEffects}" 
      IsEditable="True" SelectedItem="{Binding SelectedGroup, Mode=TwoWay}" 
      TextSearch.TextPath="GroupName" Grid.Column="1" Grid.ColumnSpan="4" Grid.Row="3"> 
      <ComboBox.ItemTemplate> 
       <DataTemplate> 
        <VirtualizingStackPanel Orientation="Horizontal"> 
         <TextBlock Text="{Binding GroupName}" Width="250"/> 
         <TextBlock Text="{Binding CorrespondingEffect}" /> 
        </VirtualizingStackPanel> 
       </DataTemplate> 
      </ComboBox.ItemTemplate> 
     </ComboBox> 

Дополнение по просьбе aks81:

Вот код для GroupsAndCorrespondingEffects

public GroupsViewModel() 
{ 
    using (DBEntities db = new DBEntities()) 
    { 
     GroupsAndCorrespondingEffects = (from g in db.Groups 
             select new GroupAndCorrespondingEffect 
                { 
                 GroupName = g.Name, 
                 CorrespondingEffect = g.Type_Effect.Name 
                } 
             ).ToList().OrderBy(g => g.GroupName); 

     Items = (from e in db.Type_Effect 
       select e.Name).ToList(); 
    } 
} 

public static GroupsViewModel CurrentInstance { get { return Instance; } } 

private IEnumerable<GroupAndCorrespondingEffect> _groupsAndCorrespondingEffects; 
public IEnumerable<GroupAndCorrespondingEffect> GroupsAndCorrespondingEffects 
{ 
    get 
    { 
     return _groupsAndCorrespondingEffects; 
    } 
    set 
    { 
     _groupsAndCorrespondingEffects = value; 
     OnPropertyChanged("GroupsAndCorrespondingEffects"); 
    } 
} 
+0

На самом деле, я немного смущен. Что вы подразумеваете под статическими элементами? Проблема не в том, что я не понимаю ваших намерений, но так как вы уже назначили 'ItemsSource'. Неясно, почему и что вы хотите добавить дополнительно. – DHN

+0

Да, я уже назначил ItemsSource. Этот элемент ItemsSource получит данные из базы данных. Но я хочу добавить элемент до заполнения данных из базы данных. – Khushi

+0

Вместо добавления 'ComboBoxItem' с помощью' xaml', почему бы вам не добавить его в коллекцию 'GroupAndCorrespondingEffects'? Также переместите «VirtualizingStackPanel» с «ItemTemplate» на «ItemsPanel». Использовать сетку в 'DataTemplate' – Sandesh

ответ

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