【问题标题】:WPF .Net Core 3.0 mapping language primitive types in XamlXaml 中的 WPF .Net Core 3.0 映射语言基元类型
【发布时间】:2019-10-24 11:55:01
【问题描述】:

在将 WPF 应用程序从 NET Framework 4.7 转换为 .Net Core 3.0 时,我面临的一个问题是在 XAML 中映射基本类型(如 Double)时出现问题。在 NET Framework 中,此 XAML 运行良好:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    >

   <sys:Double x:Key="BaseSize">10</sys:Double>
</ResourceDictionary>

但是 .Net Core 中不存在 mscorlib。如何在 .Net Core 3 中映射 XAML 中的原始类型?

试过这个: https://docs.microsoft.com/en-us/dotnet/framework/xaml-services/built-in-types-for-common-xaml-language-primitives

但是对于 WPF 来说,这不起作用,因为它在这里说明:

"在 WPF 中,您可以使用 XAML 2009 功能,但只能用于未标记编译的 XAML。用于 WPF 的标记编译 XAML 和 XAML 的 BAML 形式目前不支持 XAML 2009 关键字和功能。 "

【问题讨论】:

  • 我也犯了同样的错误,让我大吃一惊。在我的情况下,这是一个不相关的缺失资源,给出的错误具有误导性,修复了资源和原始类型错误消失了

标签: wpf xaml .net-core


【解决方案1】:

在面向 .NET Core 3.0 时,您可以使用完全相同的标记,即 xmlns:sys="clr-namespace:System;assembly=mscorlib" 确实有效。任何对mscorlib 的引用都会自动转发到System.Runtime

如果您不相信我,请尝试构建解决方案或查看this GitHub issue

编辑:从 .NET Core 3.1 开始,您应该将 assembly=mscorlib 替换为 assembly=System.Runtime

【讨论】:

  • 在 .NET Core 3.1 中,您需要指定 assembly=System.Runtime 而不是 assembly=mscorlib
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多