繁体   English   中英

2对单个C#类的XAML引用(通用App 8.1)

[英]2 XAML reference to single C# class (Universal App 8.1)

简而言之:能否使2个XAML引用到单个C#类中? 如果是这样,您如何在XAML中添加引用?

长话短说:我目前正在为VS开发8.1版通用应用。 在调查了背后的代码之后,两个平台具有相同的代码(相同)。 因此,我的计划是将代码隐藏类放在Shared文件夹中,但我仍然不知道如何使XAML(Windows 8.1和WP8.1)都将此类称为代码隐藏。

我读过这篇文章: 如何通过xaml引用类? 但这是针对WPF的,它将类指定为static

编辑:我没有将XAML变成共享文件,因为我已经将它们设计为特定于平台的

您可能只是将xaml.cs文件放入共享项目中,或为共享代码创建第三个文件并将其声明为部分文件。 然后实现项目中的差异。

但是,如果这样做,我认为将事件处理程序添加到xaml会遇到问题,就像创建基类并从其派生一样,因为处理程序将添加到本地项目中,而不是添加到共享一个。

您可能正在XAML中寻找Page元素的x:Class属性。

但是,最好在Windows应用商店和Windows Phone项目中为每个xaml页面使用两个xaml.cs文件,并在Shared Project中的单独类中使用通用代码。

更好的是,您可以将所有代码保留在共享项目中,并通过使用VisualStateManager将单个xaml页面和单个xaml.cs类用于手机和平板电脑。 这是将应用程序移植到Windows 10(这是真正的通用应用程序)时必须要做的。

尽量减少使用代码隐藏。 XAML在设计时就考虑了MVVM,因此隐藏的代码应尽可能少,最好是空的。 除MVVM外,还附加了行为,自定义控件等,可帮助从背后移动代码。

如果您无法完全摆脱代码背后的烦恼,请使用惯用的策略共享同一段代码-例如,只需将代码移到单独的类中,或使用类层次结构即可。

请注意,除了XAML和隐藏代码之外,还有一个生成的文件将控件名称连接到控件字段等,因此代码比您看到的更多。 后台代码依赖于此生成的代码,因此即使代码相同,也无法在同一项目中共享它。

只是一些想法(可能并不完美):

  1. 将两个控件的UI添加到一个XAML文件中,然后仅隐藏/删除不必要的一个。

  2. 使用模板(自定义)控件

共享项目中的文件算作其他引用共享项目的项目的一部分。 在构建特定于配置的项目时,文件是直接位于该项目中还是位于共享项目中都没有关系。

这意味着您可以将.xaml文件保留在特定于目标的项目中,并将.xaml.cs文件移动到共享文件夹中。

对于Windows 10中的通用Windows应用程序,它甚至更容易:控件全部相同,因此您不需要单独的代码。 如果您确实想针对不同的设备定制体验,则不需要共享项目,但可以使用设备限定符为不同的目标提供单独的xaml文件。

我将在博客条目中讨论如何使用部分类和资源字典共享代码在基于XAML的通用应用程序中共享代码的策略

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM