跨多个Xaml文件分割WPF界面

我正在尝试使用XAML创build用户界面。 但是,该文件正在迅速变得非常大,难以处理。 什么是最好的方式分裂它跨越几个文件。

我想能够将一个元素,如一个combobox的内容设置为一个不同的xaml文件(但在同一VS项目)定义的元素。

谢谢

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

右键单击解决scheme树,selectAdd-> New Item …然后selectUser Control。 你可以用正常的方式来devise它。

然后,您可以使用名称空间声明在XAML中引用您的usercontrol。 假设你想将你的UserControl包含在一个Window中。 在下面的例子中,我将名为“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来使用你的用户控件。

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

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

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

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

您也可以创build一个页面 ,而不是一个UserControlPage可以由Window或框架托pipe。 search页面vs用户控件的优点和缺点。 这取决于您对导航的要求,最适合您的需求。

这是一个在框架中使用页面的例子。

使用样式和用户控件。 将您的界面分成较小的部分,并在另一个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 – 这将是资源字典
等等 :)