Avalonia DataGrid 示例在设计时填充,但不在运行时填充

问题描述 投票:0回答:1

我可能错过了一些非常基本的东西 - 我是 Avalonia、MVVM 和 xaml 的新手。

我正在尝试运行此 DataGrid 示例:https://docs.avaloniaui.net/docs/reference/controls/datagrid/

在“窗口”标签中,我有: xmlns:vm="using:AvaloniaControls.ViewModels"

这是创建 DataGrid 的 xaml:

<DataGrid Name="TestGrid" x:DataType="vm:MainWindowViewModel" ItemsSource="{Binding People}" IsReadOnly="True">
    <DataGrid.Columns>
        <DataGridTextColumn Header="First Name" Binding="{Binding FirstName}"/>
        <DataGridTextColumn Header="Last Name" Binding="{Binding LastName}" />
    </DataGrid.Columns>
</DataGrid>

通过将其包含在 axaml 文件顶部附近,可以在设计时使用测试数据正确填充网格:

<Design.DataContext>
    <vm:MainWindowViewModel/>
</Design.DataContext>

但是,网格不会在运行时填充。

这是 MainWindowViewModel 类(来自在线示例):

using System.Collections.ObjectModel;
using System.Collections.Generic;

namespace AvaloniaControls.ViewModels
{
    public class MainWindowViewModel : ViewModelBase
    {
        public ObservableCollection<Person> People { get; }

        public MainWindowViewModel()
        {
            var people = new List<Person>
            {
                new Person("Neil", "Armstrong"),
                new Person("Buzz", "Lightyear"),
                new Person("James", "Kirk")
            };
            People = new ObservableCollection<Person>(people);
        }
    }

    public class Person
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }

        public Person(string firstName, string lastName)
        {
            FirstName = firstName;
            LastName = lastName;
        }
    }
}
avaloniaui avalonia
1个回答
0
投票

查看 Design.DataContext 块后,我碰巧尝试在 C# 代码隐藏中执行以下操作:

var test = new AvaloniaMVVM.ViewModels.MainWindowViewModel();
TestGrid.DataContext = test;

它现在可以工作了 - 我认为这确实应该出现在文档示例中。对于那些有 MVVM 经验的人来说可能是显而易见的。

© www.soinside.com 2019 - 2024. All rights reserved.