如何在 gridview WPF 中将组合框与不同的数据绑定

how to bind combobox with different data in gridview WPF

我在 WPF application.As 中创建了带组合框的 gridview,

    <ListView Name="MyListView" Width="261">
        <ListView.View>
            <GridView>

                <GridView.Columns>

                    <GridViewColumn DisplayMemberBinding="{Binding Operation}" />
                    <GridViewColumn>
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <ComboBox ItemsSource="{Binding Choices}" Width="100px"  />
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>

                </GridView.Columns>

            </GridView>
        </ListView.View>
    </ListView>

并且,我在 C# 的 gridview 中为每一行绑定了不同数据的组合框,

var dahList = new List<StatsOperation>();
dahList.Add(new StatsOperation
{
    Operation = "Op A",
    Choices = new string[] { "One", "Two", "Three" },
});
dahList.Add(new StatsOperation
{
    Operation = "Op B",
    Choices = new string[] { "4", "5", "6" },
});
this.MyListView.ItemsSource = dahList;

组合框中不显示任何内容

<Window x:Class="WPFTest.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:WPFTest"
    mc:Ignorable="d"
    Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">
<ListView Name="MyListView" Width="261">
    <ListView.View>
        <GridView>

            <GridView.Columns>

                <GridViewColumn DisplayMemberBinding="{Binding Operation}" />
                <GridViewColumn>
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <ComboBox ItemsSource="{Binding Choices}" Width="100px"  />
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>

            </GridView.Columns>

        </GridView>
    </ListView.View>
</ListView>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WPFTest
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            var dahList = new List<StatsOperation>();
            dahList.Add(new StatsOperation
            {
                Operation = "Op A",
                Choices = new string[] { "One", "Two", "Three" },
            });
            dahList.Add(new StatsOperation
            {
                Operation = "Op B",
                Choices = new string[] { "4", "5", "6" },
            });
            this.MyListView.ItemsSource = dahList;
        }
    }

    internal class StatsOperation
    {
        public string Operation { get; set; }
        public string[] Choices { get; set; }
    }
}