我正在使用WPF(框架3.5)进行桌面项目。
这个应用程序有很多屏幕,但所有这些都是使用单个用户控件(基本上是一个包含在类中的堆栈面板,带有一些额外的逻辑)呈现的,我所做的就像推送和弹出屏幕,具体取决于用户的选择
现在,所有屏幕(基本上都是堆栈面板)都保留在一个xaml文件中,而且这个文件变得非常大,而且维护和更新变得非常困难。
所以我想也许我可以为应用程序上的每个屏幕创建用户控件,这会破坏xaml文件,使其更容易使用,但我不确定这是最好的方法还是推荐的方法,这就是为什么我想知道其他人如何处理这个问题。
谢谢!
答案 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片段是否涉及彼此的实现细节 - 比如你将一个控件绑定到另一个元素中。这有点困难,但只是一点点。