将DataGrid绑定到队列显示为空

时间:2012-12-12 17:26:50

标签: c# .net wpf

我可能在这里做了一些简单的错误,但我似乎无法让以下工作:

    public MainWindow()
    {
        InitializeComponent();
        Loaded += new RoutedEventHandler(MainWindow_Loaded);
    }

    public Queue<Player> quePlayers { get; set; }

    Random rand = new Random((int)DateTime.Now.Ticks);

    public void MainWindow_Loaded(object sender, RoutedEventArgs e)
    {
        quePlayers = new Queue<Player>();
        //quePlayers.Add(new Player() { FullName = Guid.NewGuid().ToString(), Age = rand.Next() % 40, SomeData = Guid.NewGuid().ToString() });
        //quePlayers.Add(new Player() { FullName = Guid.NewGuid().ToString(), Age = rand.Next() % 40, SomeData = Guid.NewGuid().ToString() });
        //quePlayers.Add(new Player() { FullName = Guid.NewGuid().ToString(), Age = rand.Next() % 40, SomeData = Guid.NewGuid().ToString() });
        //quePlayers.Add(new Player() { FullName = Guid.NewGuid().ToString(), Age = rand.Next() % 40, SomeData = Guid.NewGuid().ToString() });
        //quePlayers.Add(new Player() { FullName = Guid.NewGuid().ToString(), Age = rand.Next() % 40, SomeData = Guid.NewGuid().ToString() });

        quePlayers.Enqueue(new Player() { FullName = Guid.NewGuid().ToString(), Age = rand.Next() % 40, SomeData = Guid.NewGuid().ToString() });
        quePlayers.Enqueue(new Player() { FullName = Guid.NewGuid().ToString(), Age = rand.Next() % 40, SomeData = Guid.NewGuid().ToString() });
        quePlayers.Enqueue(new Player() { FullName = Guid.NewGuid().ToString(), Age = rand.Next() % 40, SomeData = Guid.NewGuid().ToString() });
        quePlayers.Enqueue(new Player() { FullName = Guid.NewGuid().ToString(), Age = rand.Next() % 40, SomeData = Guid.NewGuid().ToString() });
        quePlayers.Enqueue(new Player() { FullName = Guid.NewGuid().ToString(), Age = rand.Next() % 40, SomeData = Guid.NewGuid().ToString() });

        dgTest.ItemsSource = quePlayers;
        //dgTest.ItemsSource = CollectionViewSource.GetDefaultView(dgTest.ItemsSource);

    }

如果我将该队列更改为列表,网格中将显示数据,但队列和堆栈不会合作

dgTest.Items属性有5个成员,我回来的CollectionView是EnumerableCollectionView,我可以枚举它并查看

中的5个成员

我的XAML也是微不足道的

<DataGrid x:Name="dgTest" AutoGenerateColumns="True" />

知道什么是错的吗?队列实现IEnumerable,而ItemsSource的唯一要求是IEnumerable

1 个答案:

答案 0 :(得分:2)

我的猜测是AutoGenerateColumns。尝试手动设置一列。