首页 > 解决方案 > 是否可以使用 XAML 岛和 WindowsXamlHost 在 WPF 中包含自定义 C++\WinRT UWP 控件?

问题描述

我有一个 WPF 应用程序,它过于繁重,无法在 UWP 中批量重写。一些 UWP 控件将利用SwapChainPanelC++/WinRT 来管理 DirectX。为了确定在 UWP 中实现应用程序的某些部分并将它们包含在 WPF 中的可行性,我按照Microsoft 文档制作了一个最小的示例应用程序,该应用程序尝试在面向 .NET Core 3.1 的 WPF 应用程序中编写 UWP 控件。

<Window x:Class="WpfAppCore3._1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:xh="clr-namespace:Microsoft.Toolkit.Wpf.UI.XamlHost;assembly=Microsoft.Toolkit.Wpf.UI.XamlHost"
        Title="WPF App"
        Height="500"
        Width="800">
    <StackPanel>
        <xh:WindowsXamlHost InitialTypeName="UwpLib.ManagedGrid"
                            Height="225" />
        <xh:WindowsXamlHost InitialTypeName="UwpLibNative.NativeGrid"
                            Height="225" />
    </StackPanel>
</Window>

这适用于托管控件,例如UwpLib.ManagedGridUwpLibNative.NativeGrid不加载:

调试器显示异常:

System.BadImageFormatException: 'Bad IL format.'

该异常向我表明了构建配置问题,但我认为在这方面应用程序设置正确。这在今天的 XAML Islands 上是不可能的,还是我在示例应用程序中犯了一些配置错误?

更新1:

我发现了“Windows 桌面兼容”选项,并确保将其设置为“是”。没变。

标签: wpfuwpc++-winrt

解决方案


推荐阅读