-1

我使用 Avalonia MVVM 应用程序模板在 Visual Studio 2019 中启动了一个全新的项目。我已经包含来自 NuGet 的 Avalonia、Avalonia.Desktop、Avalonia.Controls.DataGrid 和 Avalonia.ReactiveUI 包,并将它们全部更新到版本 0.8.3。我尝试在表单上放置的第一个控件是 DataGrid,它由一个简单的 PersonModel 类提供支持。

每次我尝试运行该程序时,都会出现错误。这实际上是我尝试使用 Avalonia 的第一个项目,而且我对 WPF 或 UWP 的经验很少,所以我完全迷失了。请帮我弄清楚如何在我的表单上获取 DataGrid。

以下是我对任何东西所做的唯一更改。其他一切都完全按照模板布局,直到我尝试添加 DataGrid。

人模型.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;
        }
    }
}

应用程序.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>

主窗口.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: 'Cannot create unknown type '{ https://github.com/avaloniaui }DataGrid'。

4

1 回答 1

0

答案在 github 上的这个 issue中。如果它不能立即工作,请尝试重新启动 Visual Studio。

于 2019-11-05T01:57:07.247 回答