在wpf中将组合框与静态和动态数据结合在一起

时间:2013-11-26 15:52:04

标签: wpf xaml combobox

正如标题所示,我想将静态项添加到dataBound ComboBox。

我已提到this帖子。

数据绑定组合框:

<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");
    }
}

1 个答案:

答案 0 :(得分:0)