Как успешно использовать элемент управления DataGrid в Visual Studio 2019 с Avalonia 0.8.3

Я начал новый проект в Visual Studio 2019 с использованием шаблона приложения Avalonia MVVM. Я включил пакеты Avalonia, Avalonia.Desktop, Avalonia.Controls.DataGrid и Avalonia.ReactiveUI из NuGet и обновил их все до версии 0.8.3. Первый элемент управления, который я попытался разместить в своей форме, - это DataGrid, поддерживаемый простым классом PersonModel.

Каждый раз, когда я пытаюсь запустить программу, я получаю сообщение об ошибке. Это буквально первый проект, для которого я пытался использовать Avalonia, и у меня очень мало опыта работы с WPF или UWP, поэтому я полностью потерялся. Пожалуйста, помогите мне разобраться, как добавить DataGrid в мою форму.

Ниже приведены буквально единственные изменения, которые я внес во что-либо. Все остальное в точности соответствует шаблону, который работал до тех пор, пока я не попытался добавить DataGrid.

PersonModel.cs

using System;
using System.Collections.Generic;
using System.Text;

namespace MyrinaUI.Models {
    public class PersonModel {
        public int DepartmentNumber { get; set; }
        public string DeskLocation { get; set; }
        public int EmployeeNumber { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }
}

MainWindowViewModel.cs

using MyrinaUI.Models;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;

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

        public MainWindowViewModel() {
            People = new ObservableCollection<PersonModel>(GenerateMockPeopleTable());
        }

        private IEnumerable<PersonModel> GenerateMockPeopleTable() {
            var defaultPeople = new List<PersonModel>() {
                new PersonModel() {
                    FirstName = "Pat",
                    LastName = "Patterson",
                    EmployeeNumber = 1010,
                    DepartmentNumber = 100,
                    DeskLocation = "B3F3R5T7"
                },
                new PersonModel() {
                    FirstName = "Jean",
                    LastName = "Jones",
                    EmployeeNumber = 1011,
                    DepartmentNumber = 101,
                    DeskLocation = "B3F3R5T8"
                },
                new PersonModel() {
                    FirstName = "Terry",
                    LastName = "Thompson",
                    EmployeeNumber = 2010,
                    DepartmentNumber = 200,
                    DeskLocation = "B3F3R5T9"
                },
            };

            return defaultPeople;
        }
    }
}

App.xaml:

<Application xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:MyrinaUI"
             x:Class="MyrinaUI.App">
    <Application.DataTemplates>
        <local:ViewLocator/>
    </Application.DataTemplates>

    <Application.Styles>
        <StyleInclude Source="avares://Avalonia.Themes.Default/DefaultTheme.xaml"/>
        <StyleInclude Source="avares://Avalonia.Themes.Default/Accents/BaseDark.xaml"/>
        <StyleInclude Source="avares://Avalonia.Controls.DataGrid/Themes/Default.xaml"/>
    </Application.Styles>
</Application>

MainWindow.xaml

<Window xmlns="https://github.com/avaloniaui"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:vm="clr-namespace:MyrinaUI.ViewModels;assembly=MyrinaUI"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
        x:Class="MyrinaUI.Views.MainWindow"
        Icon="/Assets/avalonia-logo.ico"
        Title="MyrinaUI">

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

  <StackPanel>
    <DataGrid AutoGenerateColumns="True" Items="{Binding People}"/>
  </StackPanel> 
</Window>

Возникает следующее исключение: System.IO.FileNotFoundException: "Ресурс avares://Avalonia.Controls.DataGrid/Themes/Default.xaml не может быть найден".

Это кажется довольно простым, но, посмотрев исходный код на GitHub и увидев рассматриваемый файл, я не уверен, где искать, чтобы убедиться, что он существует локально, или если это даже поможет мне.

Удаление этой строки из App.xaml приводит к: Portable.Xaml.XamlObjectWriterException: "Невозможно создать неизвестный тип" {https://github.com/avaloniaui}DataGrid ".

1 ответ

Ответ в этом выпуске на github. Если сразу не работает, попробуйте перезапустить Visual Studio.

Другие вопросы по тегам