问题标签 [xaml-islands]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - XAML 岛,尝试发布 WPF 项目时总是出错。更多人有同样的问题?
我正在尝试运行 Microsoft 在https://github.com/microsoft/Xaml-Islands-Samples提交的 WPF XAML Islands 示例。每次我发布应用程序并尝试在任何 Windows 10 机器上执行项目时(是的,我已确认具有相同的修订版)我都会收到相同的错误:
应用程序:WPF_XAMLIslands_v1.exe CoreCLR 版本:4.700.20.36602 .NET Core 版本:3.1.7 描述:进程因未处理的异常而终止。异常信息:System.IO.FileLoadException:无法加载文件或程序集“System.Runtime,版本=4.2.2.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”。找到的程序集的清单定义与程序集引用不匹配。(0x80131040) 文件名:'System.Runtime,版本=4.2.2.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a'
对这件事有什么想法???我使用的 windows 10 的版本是 2004
c# - 我可以通过 XAML Islands 在 WPF 中使用 ContentDialog
在某些情况下,我想调用 Windows 10 样式对话框,因为它更美观、更现代。但是我们的项目使用的是WPF,不能ContentDialog
直接调用。
我不确定 XAML Islands 是否能满足我的要求。
我按照MS的文档,WindowsXamlHost
在XAML中添加了一个,并在回调中设置了Title,Content等属性ChildChanged
,但是它抛出了一个异常:
XAML
C#
如果我遵循其他文档:https ://docs.microsoft.com/en-us/windows/communitytoolkit/controls/wpf-winforms/windowsxamlhost
当我调用时会显示相同的异常ShowAsync()
有人可以帮助我吗?
c# - 如何在 WPF 中为 XAML 岛使用正确的 WindowsRuntime.dll?
我正在开发一个 WPF 应用程序,我想添加XAML Islands
以便能够在我的应用程序中使用 Windows 10 控件。按照本教程,我Microsoft.Toolkit.Wpf.UI.XamlHost
通过 Nuget 包管理器添加了项目。它还安装了它的依赖项,例如Microsoft.Windows.SDK.Contracts (10.0.18362.2005)
,它依赖于System.Runtime.WindowsRuntime >= 4.6.0
. 当我运行项目时,出现如下编译错误:
清除错误消息,XamlHost 安装了它的依赖项(它修改了app.config
和packages.config
文件 - 确切的行发布在下面),并且我还通过MyProject.csproj
以下方式在文件中默认添加了 WindowsRuntime.dll:
因此,我留下了当前与 XamlHost 一起安装的依赖项,并删除了默认的依赖项,即我在上面发布的内容。然后,当我编译它时抛出一个错误弹出窗口:This application has failed to start because the application configuration is incorrect.
我还尝试删除另一个导入,它是在我安装 XamlHost 项目时添加的:
因此,从app.config
以下行中删除:
并从packages.config
:
但它抛出了相同的弹出窗口,即项目配置不正确。
还更新到最新的 Visual Studio(我正在使用 vs2019 社区),更新到最新的 windows SDK 和最新的 .NET Framework。
所以,有几个问题:
- 文件中的每个引用
MyProject.csproj
都是从文件夹中添加的packages
,除了这个WindowRuntime
,它来自 Program Files(上面的路径),为什么没有从packages
文件夹中引用?(还尝试将其版本更改为 4.6.0,没有。尝试替换导入路径并将其设置为 packages 文件夹,没有。如果我删除它,甚至不会编译项目)。 - 在那个路径中是
WindowsRuntime.dll
什么Program Files
,.NetCore\v4.5\
但是最新的 .NetCore 是 3.1?它包含一个WindowsRuntime.dll
版本 4.0.0,为什么?
我究竟做错了什么?
c# - 如何将 XamlHost 添加到 WPF 项目?
基于这个问题,我将我的 WPF 项目(以 .NET Framework 为目标)迁移到了 .NET Core 3.1。从理论上讲,此步骤将允许用于Microsoft.Toolkit.Wpf.UI.XamlHost
在我的 WPF 应用程序中托管 Windows 10 控件。
我创建了一个以 .NET Core 为目标的新 WPF 项目,并将源代码移至这个新项目并解决了所有依赖问题。
当我Microsoft.Toolkit.Wpf.UI.XamlHost
通过 Nuget 包管理器安装库 (6.1.2) 时(仅在.csproj
文件中添加了以下行:) <PackageReference Include="Microsoft.Toolkit.Wpf.UI.XamlHost" Version="6.1.2" />
,项目可以编译但无法运行。它显示以下错误消息:
当我删除库依赖项时,项目又开始了......
我认为问题不在于清单文件,因为它没有改变。那么可能是什么问题?从哪里开始搜索呢?也许与其他依赖项之一?我在哪里可以找到该应用程序事件日志?(我搜索了很多,但没有找到)。
我尝试了示例应用程序,它运行良好,所以可能有什么东西干扰了XamlHost
我的项目?
c# - 无法在 C++/WinRT Xaml Islands 项目中使用来自 C# WinRT 组件的 Xaml 组件
如何复制(我们将以 Windows 终端为例):
克隆 Windows 终端存储库并获取子模块
UserControl
使用一些随机控件在解决方案中创建 C# Windows 运行时组件从要托管的项目中引用 C# WinRT
UserControl
组件在 Windows 终端项目之一中打开 Xaml 页面(我们将使用
TerminalPage.xaml
fromTerminalAppLib
project 作为示例)添加
UserControl
到该页面编译并运行(您可能需要包含
UserControl
topch.h
文件的生成的 Xaml 编译文件,以便在没有 Xaml 编译器错误的情况下进行编译)你会发现应用会崩溃
class not registered
异常
我试过的:
使用
Class Library
代替WinRT Component
https://github.com/asklar/WinRTComponent/blob/master/README.md
在文件中注册类
WindowsTerminal.manifest
,如下所示(我使用.dll
而不是.winmd
尝试使用Class Library
):
AppxManifest.xml
在文件中手动注册类
uwp - 如何在 UWP RichEditBox 中捕获超链接点击?
我正在尝试在 UWP 自定义组件中使用 RichEditBox,该组件将通过 XamlIslands 添加到 WPF 应用程序中:
<RichEditBox x:Name="editor" PointerPressed="editor_PointerPressed" Tapped="editor_Tapped" PointerReleased="editor_PointerPressed">
我通过以下方式添加超链接:
editor.Document.Selection.Link = "\"[the link]\"";
它工作正常,当 Ctrl+单击它时它会在浏览器中打开链接,但我怎样才能捕捉到该单击事件?
我在 RichEditBox 中定义为参数的回调都不会触发,因此根本不会触发 PointerPressed、PointerReleased 和 Tapped 事件。
c# - 如何使用 XamlIslands 和桌面桥打包 WPF (.NET Core) 应用程序?
我有一个WPF
目标应用程序,.NET Core v3.1
我正在使用XamlIslands
它来显示 Windows 10 UI 组件。为了使用XamlIslands
,我必须先将我的应用程序.NET Framework
从.NET Core
.
我将我的自定义UWP
组件放入了一个UWP project
目标Win10 version 2004
,最小版本是1903
. 在项目中,我可以使用XamlHostsWPF
引用这些自定义组件。UWP
然后,我有一个Desktop Bridge
项目,可以打包WPF
应用程序,以便能够上传到 Microsoft Store。
该项目编译并正确运行,我什至可以运行打包项目,但是当我尝试创建一个侧面加载的应用程序包时,它给了我以下错误:
我尝试将UWP
应用程序的最低版本设置为windows 10, build 10240
(这是最旧的版本),但出现了相同的错误(当然,更新后的 uap 版本)。
在这个答案中,我读到也许我应该创建一个.NET Standard
项目?但是没有办法创建WPF
应用程序定位.NET Standard
。
- 当我可以构建和运行整个解决方案时,错误消息如何表明该
UWP
应用程序不兼容?.netcore
如果它运行,为什么不能创建一个应用程序包? - 那么我如何创建一个应用程序包,我可以将其上传到商店?
c# - 如何修复 Microsoft Store 包验证错误:您无法提交预编译的 .NET Native 包?
我正在开发一个WPF
应用程序,我添加了一个自定义 WinRT 组件(在 中实现UWP
),我WPF
通过 XamlHost 在应用程序中托管这个 win10 组件。我遵循文档的每一步,我的自定义控件是在 aUWP app project
而不是 a中实现的UWP class library
。该应用程序运行良好,UWP
组件在WPF
应用程序中正确显示。我可以创建应用程序包,但是当我上传到 Microsoft Store(.msixupload
文件)时,抛出了以下错误:
预编译的 .NET Native 包是什么意思?
我还检查了示例应用程序,其中包含用于不同架构的winrthost.dll 。但是文档没有提到这一点,我还添加到我的 UWP 项目中并按照示例应用程序.csproj
文件中的方式进行配置。我试图删除这个 dll 文件,但商店仍然不接受构建。
当我删除对UWP App
项目的引用时,商店接受了我的构建。当我重新添加引用(不使用其中的任何组件)时,商店拒绝了。所以我认为问题出在自定义 UWP 应用程序中,但这里的预编译 .NET Native 包可能是什么?
更新:
我在解决方案中添加了一个新的空 UWP 应用项目,只需设置 XamlApplication 并从WPF
应用程序中引用它。UWP 组件显示在 WPF 中(我只添加了一个绿色矩形),但是当我尝试上传到商店时,它显示了相同的错误消息。
正如文档所说,还尝试创建 UWP 类库而不是 UWP 应用程序。创建了构建并接受了商店...有什么区别?
文档说:
你也可以在上一节中创建的 UWP 应用项目中定义自定义控件。但是,出于说明目的,这些步骤在单独的类库项目中执行此操作,因为这通常是实现自定义控件以实现可移植性的方式。
因此,理论上可以发布带有托管在 UWP 应用程序中的自定义 WinRT 组件的 WPF 应用程序,对吧?那为什么商店不接受呢?
c# - 如何将 Home/End 按钮按下传播到 WPF ScrollViewer 内的 UWP RichEditBox?
在WPF
其中一个窗口上的应用程序(针对 .NET core 3.1)中,我有一个ScrollViewer
ScrollViewer(以及其他元素),我放置了一个自定义控件UWP
,其中包含一个RichEditBox
. 我通过以下方式添加了这个自定义 UWP 控件XamlHosts
:
UWP 样式的 RichEditBox 显示在 WPF 应用程序中,我可以键入文本,使用箭头按钮移动插入符号,但某些关键事件不起作用。例如,我不能使用 Home/End 按钮转到 RichEditBox 中一行的开头或结尾。
问题是,WPF 应用程序中的 ScrollViewer 会捕获这些按钮按下(Home/End/Ctrl+Right-Left)并且它不会传播到 Xaml Island RichEditBox 控件。我知道这一点,因为如果我删除 ScrollViewer,问题就会消失。
我尝试为 ScrollViewer 设置Focusable="False"
和IsTabStop="False"
,但没有帮助。KeyDownEvent
我可以在 WPF 中捕获这些键盘事件,但在 XamlIsland UWP 控件中,当我按下 Home 或 End 按钮(也不是,也不是)时,根本不会触发这些事件PreviewKeyDownEvent
。对于其他键,它们会被解雇。
我可以以某种方式阻止 ScrollViewer 捕获键盘事件吗?或者,当我在 WPF 中捕获它们时,我能否以某种方式在 UWP RichEditBox 上引发键盘事件?