【问题标题】:Xaml Islands - Microsoft starter example not working for meXaml Islands - Microsoft 入门示例不适合我
【发布时间】:2020-03-04 05:13:07
【问题描述】:

我正在关注此处显示的基本入门示例: https://docs.microsoft.com/en-us/windows/apps/desktop/modernize/host-custom-control-with-xaml-islands

我已尽可能密切关注它。如果我将用户控件放入 UWP 应用程序(与示例不同),我可以让它工作,但不能像类库中的用户控件那样工作。

首先,当我按原样运行示例时,我得到: “面向 Windows 版本 10.0.18226.0 及更高版本的应用支持 WindowsXamlManager 和 DesktopWindowXamlSource。请检查应用程序清单或程序包清单并确保 MaxTestedVersion 属性已更新。”

我能找到的唯一解决方案是将清单文件添加到 wpf 项目中,其中包含:

<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>

      <!-- Windows 10 -->
      <maxversiontested Id="10.0.18362.0"/>
      <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />

    </application>
  </compatibility>

</assembly>

之后,我没有看到该错误,但是当 wpf 表单加载时,我看到“无法创建 ClassLibrary1.MyUserControl1 类型的控件”,但没有任何线索说明原因。

任何人都知道我做错了什么,如何找出问题所在知道任何有效的例子?

【问题讨论】:

  • 虽然我已经在配置管理器中为所有项目设置了 x64,但我的解决方案平台仍然设置为“任何 cpu”。我将其更改为 x64,现在遇到了另一个问题,在 this.InitializeComponent, "Windows.UI.Xaml.Markup.XamlParseException: 'XAML parsing failed.' "
  • 您好,我测试了官方文档的内容,并构建了一个XamlIsland WPF应用程序进行测试。即使我没有在 WPF 项目中设置MaxTestedVersion,它仍然可以正常工作。您可以查看您创建的 WPF 项目是否基于 .Net Core 3 以及您创建的 UWP 项目和 UWP 类库的最低版本是否为 1903(18362)。如果一切正常,请提供更多代码(例如如何创建自定义 UserControl)以便我们进行测试。
  • 谢谢,我在这里上传了我的尝试:belchamber.net/wpfapp1.zip 抱歉,如果我做了什么太愚蠢的事情

标签: xaml uwp windows-10-universal


【解决方案1】:

我下载了你的项目包,发现你少了一步。

这是Create a custom UWP control的第四步

在结束元素之前,添加以下 XML 以禁用几个属性,然后保存项目文件。必须启用这些属性才能在 WPF(或 Windows 窗体)应用中托管自定义 UWP 控件。

<PropertyGroup>
  <EnableTypeInfoReflection>false</EnableTypeInfoReflection>
  <EnableXBindDiagnostics>false</EnableXBindDiagnostics>
</PropertyGroup>

将此代码添加到ClassLibrary1.csproj 后,清理类库并重建它,然后一切正常。

最好的问候。

【讨论】:

  • 谢谢,我做了那个改变,然后它就起作用了。我有点困惑,因为我做了很多尝试并多次做出改变。该特定尝试是在另一台计算机上进行的,我将进一步调查。但感谢您的支持。
  • 我注意到我仍然在 MainWindow.xaml 中的“xaml:WindowsXamlHost”下收到错误/警告:“找不到 Windows 运行时类型'Microsoft.Toolkit.Win32.UI.XamlHost.IXamlMetadataContainer'。WpfApp1 MainWindow.xaml 11" ,尽管这似乎并没有阻止它运行。你知道这是怎么回事吗?
  • 您好,我查看了运行日志,但没有相关的错误/警告输出。您可以尝试清理解决方案,如果问题仍然存在,请提供更详细的重复步骤
  • 我实际上是从我发送给您的解决方案开始的,并且只做了您上面建议的不同。每次尝试此操作时,我都会看到相同的错误,我们软件办公室的其他人也是如此。
  • 还有一些非常奇怪的东西,我扩展了示例以使用来自 vb 项目的控件。对我来说,它确实有 50% 的时间交替工作。第一次运行我得到“无法创建控件......”,停止并运行,它工作并显示 VB 控件,停止并运行,我得到“无法创建控件......”等。 belchamber.net/wpfapp1vb.zip
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-16
  • 1970-01-01
相关资源
最近更新 更多