控件库中的控件"/>
WindowsXamlHost:在 WPF 中使用 UWP 控件库中的控件
在 WindowsXamlHost:在 WPF 中使用 UWP 的控件(Windows Community Toolkit) 一文中,我们说到了在 WPF 中引入简单的 UWP 控件以及相关的注意事项。不过,通常更有实际价值的是更复杂的 UWP 控件的引入,通常是一整个 Page。
本文将介绍如何在 WPF 项目中引用 UWP 的控件库。
本文内容
- 创建一个 UWP 控件库
- 对 WPF 项目的准备工作
- 不方便的引入方式
- 编辑 UWP 项目文件
- 重新加载项目并编译
- 在 WPF 项目中间接引用 UWP 控件库
- 在 WPF 项目中使用 UWP 控件库中的控件
- 参考资料
创建一个 UWP 控件库
建议专门为你复杂的 UWP 控件创建一个 UWP 控件库。在这个控件库中的开发就像普通 UWP 应用一样。这样比较容易创建出更复杂的 UWP 控件出来,而不会与 WPF 项目产生太多的影响。
▲ 创建一个 UWP 控件库
▲ 选择 SDK 版本
对 WPF 项目的准备工作
你依然需要阅读 WindowsXamlHost:在 WPF 中使用 UWP 的控件(Windows Community Toolkit) 一文,以便将你的 WPF 项目改造成可以访问 UWP 类型的项目。
不方便的引入方式
你如果直接让 WPF 项目添加 UWP 项目的引用,将会得到一个错误提示:
也就是说并不能直接完成这样的引用。
也许将来 WPF 项目格式更新或者 Visual Studio 的更新能为我们带来这样更直接此引用方式。不过现在来看,还不能如此方便地使用。
编辑 UWP 项目文件
是的,你需要手工编写 UWP 的项目文件。
如果你阅读过 (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序 这篇文章,或者已经 理解了 C# 项目 csproj 文件格式的本质和编译流程,那么对这里 csproj 文件的编辑应该不会感觉到陌生或者害怕。当然,即便你没有编辑过或者不理解 csproj 也不用担心,你只需要按照本文要求进行操作即可。
现在,右击卸载项目,再右击编辑项目文件:
▲ 编辑项目文件
找到 Import
targets 的哪一行,你需要在那一行前面的任意位置添加以下特别标注为新增的几行:
++ <PropertyGroup>
++ <EnableTypeInfoReflection>false</EnableTypeInfoReflection>
++ <EnableXBindDiagnostics>false</EnableXBindDiagnostics>
++ </PropertyGroup><Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v$(VisualStudioVersion)\Microsoft.Windows.UI.Xaml.CSharp.targets" />
随后,还要在以上 targets 之后再添加以下代码:
<PropertyGroup><!-- 这里需要填写你的 WPF 项目的路径 --><HostFrameworkProjectFolder>$(ProjectDir)..\Whitman.Wpf
更多推荐
WindowsXamlHost:在 WPF 中使用 UWP 控件库中的控件
发布评论