在我的应用程序中分解大型XAML文件的最简单方法是什么?

时间:2009-06-04 13:48:30

标签: wpf xaml user-controls

我最近发现我可以利用用户控件来减小主应用程序的.xaml文件的大小。我是WPF的新手,并意识到我的应用程序的XAML变得非常长,非常快,并且滚动很麻烦。

用户控制是解决此问题的最佳方法(即在单独的控件库中有大量用户控件及其模板)吗?

您如何管理XAML?

提前致谢!

3 个答案:

答案 0 :(得分:9)

将事物拆分成单独的控件是正确的,这有助于减少单个xaml文件的大小。 减小文件大小的另一种方法是使用ResourceDictionaries。将样式,模板和资源拆分为单独的ResourceDictionaries时,可以大大减小窗口和控件的xaml文件的大小。分割完东西后,您可以使用MergedDictionaries功能从您需要的任何地方访问样式和模板。如果在多个窗口和控件中使用特定资源,您还可以将其ResourceDictionary合并到App.xaml资源中,从而允许从解决方案中的任何位置使用它。

就个人而言,我喜欢将每个XAML文件保存在大约300行或更少的行之后,在此之后我会看到是否有更好的方法来组织它。 Here有关如何保持资源有序的一些其他信息和提示。

答案 1 :(得分:1)

同样对于主题/样式避免在控件/个人级别放置样式,而是让theme.xaml直接处理外观,这样你就不会在Xaml中拥有大量的样式信息。

即。通过直接在主题文件中的MyControl上应用样式可以避免<MyControl Style="{StaticResource myControlStyle}"/>,这是您唯一的方式 Window.xaml中的<MyControl/>

答案 2 :(得分:1)

用户控件是将代码隔离出主窗口的一种非常好的方法。除了整理之外,它们还提供其他优势,例如模块化代码并为代码段提供有限的接口,这有助于提高可维护性并有助于防止意大利面条代码。

除此之外,DataTemplates也很有用。例如,假设您有一堆需要输入的字段,并且所有这些字段都有标签。在这种情况下,您可以创建一个具有两个属性的类,一个用于标签,另一个用于该字段的值。然后,您可以为该类创建一个DataTemplate,将标签绑定到TextBlock,将值绑定到TextBox。如果您希望所有标签都排成一行,则可以创建Grid SharedSizeScope。执行此操作后,您可以创建该类的ObservableCollection,使用标签和值填充集合,然后将ItemsControl的ItemsSource设置为它。在得到这个开始的初始管道之后,数据输入表单的生成速度可以比在WinForms中更快。