有没有一种简单的方法来包含大块的xaml代码?

时间:2016-05-31 16:39:57

标签: xaml uwp dry template-engine reusability

编码xaml时,我们拥有精彩的资源词典,样式,用户控件和模板化控件,使xaml可扩展且易于重用。

但是如果将多个地方的xaml代码包含在一起呢?

让我给一个考试。

我想在我的所有xaml页面上使用网格定义。

<!--Row definitions-->
<Grid.RowDefinitions>
    <RowDefinition Height="50" />
    <RowDefinition Height="Auto" />
    <RowDefinition />
</Grid.RowDefinitions>

就像现在一样,我只是在我的所有xaml页面上复制粘贴这个定义。可以想象,即使对网格定义进行最简单的更改也会成为一场噩梦。除了DRY代码之外别无其他。

那么,有更聪明的选择吗?就像在单独的xaml文件中定义块一样,然后编写类似

的内容
<includes:GridDefinitions>

在PHP中,您可以获得TwigBlade之类的模板工具,您可以在其中编写主模板,然后对其进行扩展(以下示例来自twig)

base.html.twig

{% block content %}

{% endblock %}

page.html.twig *

{% extends "base.html" %}

{% block content %}
    Content of the page...
{% endblock %}

他们甚至有一个include语句,它只是获取一个html文件的所有内容,并将其包含在你放置标记的任何地方

{{ include('page.html') }}

所以问题是

xaml是否有某种模板引擎或包含我还不知道的功能?或者有没有办法使用资源词典等来实现类似的DRY代码效果?

如果我要查找的内容不清楚,请随时发表评论并要求提供更多信息。

1 个答案:

答案 0 :(得分:1)

根据我的经验,您的问题没有直接的答案,但您可以考虑以下选项:

  1. 对于UI,stiles,...的部分内容 - 在第一行中提到的单独文件中定义UserControls,dictionaries,ContentConrols .... (以防万一,如果你想“样式化”像RowDefinitions这样的东西你应该把它们包装成依赖对象 - 这里是a detailed article。)
  2. 对于类似页面 - 定义Visual Studio模板以生成预定义标记/文件等
  3. 对于代码的类似部分 - 定义code snippets - 这里是how-to for XAML。他们将在编码时工作。