【问题标题】:Is there an alternate to TemplatePartAttribute in UWP?UWP 中是否有替代 TemplatePartAttribute 的方法?
【发布时间】:2015-09-30 06:31:30
【问题描述】:

我花了一些时间才发现这一点,但像 TemplatePart 这样的设计器特定属性现在导致我的 UWP 应用程序的发布版本出现问题。

将此属性应用于您的控件是使用反射。

[TemplatePart(Name = PART_Panel, Type = typeof(Panel))]
public class MyAwesomeControl : Control
{
   ...
}

构建输出给了我这个:

警告:类型“Windows.UI.Xaml.Controls.Panel”未包含在 编译,但在“MyAwesomeControl”类型中被引用。也许有 一直缺少程序集。

如果您希望构建工作,我必须排除该属性。然而,这违背了控制库的目的。我的库的用户不会知道 MyAwesomeControl 的模板中需要一个名为 PART_PanelPanel

有解决办法吗?我是否必须为该类型启用反射才能允许设计时属性通过?

我知道rd.xml 文件可以嵌入到项目中。但是,如果包含 <Type Name="Windows.UI.Xaml.Controls.Panel" ... />,这是否意味着我告诉编译器将该面板排除在 .Net Native 优化之外?

【问题讨论】:

  • This article 可能会提供线索。它是为 VS2013(.Net Native Beta)编写的,所以我不知道它是否可以转换为 VS2015。基本上解决方案是创建一个 rd.xml 文件,其中包含库中的反射类型。 rd.xml 文件被构建为二进制文件中的嵌入式资源,因此最终用户无需执行任何操作。
  • 嗨@chuex,我以前读过那篇文章,是的,它很有帮助。但是,这是否意味着我会告诉编译器从 .Net Native 优化中排除面板?
  • 我认为你已经达到了我在这方面的专业知识的极限。上面的构建输出只是一个警告......它不应该阻止你构建,对吗?我确实尝试使用上面的模板属性创建一个重现项目。我收到了警告,但我的项目仍然运行良好。就像我说的我对 Blend 和设计师属性不够熟悉,所以也许我做错了什么。

标签: c# xaml windows-store-apps uwp


【解决方案1】:

这是您运行的 .Net Native 工具 (ilc.exe) 版本中的一个不幸错误。从 Visual Studio 的 Update 1 版本开始正确支持此属性。您可以在此处获取 RC:https://www.visualstudio.com/en-us/news/vs2015-update1-vs.aspx

如果您在使用旧工具时遇到问题,可以放心地忽略该警告。

【讨论】:

  • 谢谢马特。我会调查此更新并回复您。很高兴听到它已排序。
  • 是的。如果这不起作用,请告诉我(我在 .Net Natie 团队工作:-))
  • 对吗?无论如何,我们可以在 SO 之外连接吗?我为 Drawboard 工作,它是所有 Surfaces 上的特色应用程序。很想与您部门的技术人员联系。
  • 尝试在 microsoft 邮寄 dotnetnative。你会在那里找到我的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-06
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 2010-09-20
  • 2021-08-29
  • 2023-03-14
相关资源
最近更新 更多