在wpf中以编程方式将comboBox添加到listview

时间:2016-07-08 06:47:06

标签: c# wpf listview

我在wpf中有一个ListView

<ListView Name="listArea">
    <ListView.View>
        <GridView>
            <GridViewColumn x:Name="colName" Header="نام تحویلدار" Width="150" DisplayMemberBinding="{Binding Path=name}"/>
            <GridViewColumn x:Name="colComboBox" Header="منطقه" Width="120" DisplayMemberBinding="{Binding Path=cb}"/>
            </GridView>
     </ListView.View>
 </ListView>

我想将项目添加到listview。第一列是文本,第二列是comboBox。

foreach(personel ptahvildar in STATICS.db.personels.Where(q=>q.postCode==2))
{
    ListViewItem item = new ListViewItem();
    ComboBox cbox = new ComboBox();
    cbox.ItemsSource = STATICS.db.personels.Where(q => q.postCode == 2);
    cbox.DisplayMemberPath = "name";
    cbox.SelectedItem = ptahvildar;
    item.Content = new { name = ptahvildar.name, cb = cbox };
    listArea.Items.Add(item);
}

但结果是这样的

result

为什么我的comboBox无法正确显示?

1 个答案:

答案 0 :(得分:0)

您应该修改ListView.itemTemplate property并添加数据模板。

使用带有数据模板的项目模板,您可以为列表视图中的每个订单项添加复选框,组合框,文本框,按钮等。 Here是SO中答案的一个例子。

<ListView ItemsSource="{Binding Links}" x:Name="ListView1">
        <ListView.ItemTemplate>
            <DataTemplate>
                <Border>
                    <Button Command="{Binding ElementName=ListView1, Path=DataContext.GetOddsCommand}" CommandParameter="{Binding}">
                         <TextBlock Text="{Binding}" />
                    </Button>
                </Border>
            </DataTemplate>
        </ListView.ItemTemplate> 
</ListView>

除了您只需使用组合框而不是按钮并使用正确的绑定..