0

我一直在使用 DevExpress MVVM 程序集(.Net Core)。我创建了一个使用 AvaloniaUI 代替 WPF 的程序集版本。

我将这个程序集包含在我的客户端项目中,并且在 XAML 定义中的名称空间解析方面遇到了困难。我使用上面提到的 MVVM 程序集(使用 AvaloniaUI)代替默认版本。

考虑以下 XAML 定义:

<Window x:Class="Moonshot_Foundry_Core.Views.MainWindowView"
 xmlns="https://github.com/avaloniaui"
 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm"
 xmlns:views="clr-namespace:Sample.Views"
 xmlns:productionViewModels="clr-namespace:Sample.ViewModels.Production"
 xmlns:designViewModels="clr-namespace:Sample.ViewModels.Designer"
 WindowStartupLocation="CenterScreen"
 mc:Ignorable="d" Title="Sample" Height="720" Width="1280" 
 DataContext="{dxmvvm:ViewModelSource Type=productionViewModels:MainWindowViewModel}"
 d:DataContext="{dxmvvm:ViewModelSource Type=designViewModels:MainWindowViewModel}">

我收到以下错误:

错误 XAMLIL 无法从命名空间 http://schemas.devexpress.com/winfx/2008/xaml/mvvm解析类型 ViewModelSource (第 13 行位置 9)第 13 行,位置 9。

我记得在某处读过我应该尝试使用引用的程序集而不是命名空间定义中的 URL。我不确定如何做到这一点。

有人可以帮助阐明如何调试此问题或可能的解决方案是什么?

4

1 回答 1

1

您可以尝试使用引用程序集代替 URL 使用命名空间声明:(将v19.1替换为您引用的版本)

xmlns:dxmvvm="clr-namespace:DevExpress.Mvvm.POCO;assembly=DevExpress.Mvvm.v19.1"

就我而言,我在创建一个新的 DevExpress 项目时遇到了类似的问题,它使用程序集命名空间声明创建了 MainWindow.xaml,但它不会构建,我必须用URL声明替换它才能使其工作:

xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm"

也许相反的情况会适用于您的情况。

另请注意,如果项目构建并运行,则有关命名空间声明的任何错误都可能不是问题 - 只是 XAML 解析器无法获得对(未)构建程序集的完全访问权限,您可能可以忽略这些错误如果您能够运行您的应用程序。

于 2020-08-11T14:51:34.290 回答