56

我正在尝试使用 XAML 创建用户界面。但是,该文件很快变得非常大并且难以处理。将其拆分为多个文件的最佳方法是什么。

我希望能够将诸如 ComboBox 之类的元素的内容设置为在不同 xaml 文件中定义的元素(但在同一个 VS 项目中)。

谢谢

4

4 回答 4

48

您可以通过定义 UserControls 来拆分大型用户界面。

右键单击解决方案树,选择 Add->New Item... 然后选择 User Control。您可以按常规方式进行设计。

然后,您可以使用命名空间声明在 XAML 中引用您的用户控件。假设您想在一个窗口中包含您的 UserControl。在以下示例中,我将一个名为“Foo”的 UserControl 添加到命名空间“YourCompany.Controls”中:

<Window x:Class="YourCompany.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:Controls="clr-namespace:YourCompany.Controls">

  <Controls:Foo ... />

对于您的特定示例,您将通过定义在您的用户控件中显示数据的 DataTemplate 在组合框中使用您的用户控件。

于 2008-10-22T08:10:48.627 回答
28

您可以使用ResourceDictionary拆分 XAML 文件。ResourceDictionary 可用于合并其他文件:

<Page.Resources>
  <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
      <ResourceDictionary Source="myresourcedictionary.xaml"/>
      <ResourceDictionary Source="myresourcedictionary2.xaml"/>
    </ResourceDictionary.MergedDictionaries>
  </ResourceDictionary>
</Page.Resources>

在 ResourceDictionary 中,您还可以声明可以在元素中使用的样式,以便主 XAML 文件变得更小。

获得更小的 XAML 文件的另一种可能性是定义您自己的控件,然后在您的主应用程序中使用这些控件。

于 2008-10-22T08:06:42.833 回答
3

您还可以创建Page,而不是UserControl. APage可以由WindowFrame托管。搜索 Page 与 UserControl 的优缺点。这在一定程度上取决于您对导航的要求,这将最适合您的需求。

这是在框架中使用页面的示例。

于 2016-10-17T06:11:51.553 回答
-1

使用样式和用户控件。将您的界面划分为较小的部分,并将它们编码到另一个 xaml 文件中。例子:

<Window>
<VeryBigControl>
<VeryBigControl.Style>
... <!--very long style-->
</VeryBigControl.Style>
.. <!--content of very big control-->
</VeryBigControl
</Window>

将其分成三个 xaml 文件:
Window.xaml - 这将是 Window VeryBigControl.xaml - 这
将是 UserControl
VeryBigControlStyle.xaml - 这将是资源字典
等等 :)

于 2008-10-22T08:07:01.443 回答