这可能是打破大型xaml的最佳方法?

时间:2010-12-17 15:59:55

标签: wpf xaml large-files

我正在使用WPF(框架3.5)进行桌面项目。

这个应用程序有很多屏幕,但所有这些都是使用单个用户控件(基本上是一个包含在类中的堆栈面板,带有一些额外的逻辑)呈现的,我所做的就像推送和弹出屏幕,具体取决于用户的选择

现在,所有屏幕(基本上都是堆栈面板)都保留在一个xaml文件中,而且这个文件变得非常大,而且维护和更新变得非常困难。

所以我想也许我可以为应用程序上的每个屏幕创建用户控件,这会破坏xaml文件,使其更容易使用,但我不确定这是最好的方法还是推荐的方法,这就是为什么我想知道其他人如何处理这个问题。

谢谢!

2 个答案:

答案 0 :(得分:6)

为什么不使用资源字典来分解Xaml

<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Dictionary1.xaml" />
            <ResourceDictionary Source="Dictionary2.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Window.Resources>
<Grid>
    <StackPanel>
        <ContentControl Content="{StaticResource StackPanel1}" />
        <ContentControl Content="{StaticResource StackPanel2}" />
    </StackPanel>
</Grid>

字典的内容与此类似

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <StackPanel x:Key="StackPanel1">
        <Button />
        <Button />
    </StackPanel>
</ResourceDictionary>

答案 1 :(得分:1)

将XAML模块化为较小的文件非常有意义。用户控件是一种非常好的方法 - 这是我在需要时尝试的第一个想法,而且我不需要找到第二个。

你遇到的唯一真正问题是,你试图模块化的XAML片段是否涉及彼此的实现细节 - 比如你将一个控件绑定到另一个元素中。这有点困难,但只是一点点。