Как успешно использовать элемент управления 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.