我有WPF应用程序和2个具有相似结构的Windows(一切都相同:菜单,标题,工具栏,只有在中间一个堆栈面板是其他的,在一个窗口中有10个TextFields,Button和其他控件,另一个有这个堆栈面板中的其他控件。我可以复制另一个窗口,但是我复制了代码。我怎么能解决这个问题?谢谢。
答案 0 :(得分:1)
一种方法是为窗口创建ControlTemplate
和/或Style
。
<ControlTemplate x:Key="MyWindowTemplate" TargetType="Window">
<AdornerDecorator>
<DockPanel>
<!-- Your toolbar content and other shared content -->
<!-- The dynamic content is loaded into the content presenter: -->
<ContentPresenter Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}" />
</DockPanel>
</AdornerDecorator>
</ControlTemplate>
<Style x:Key="MyWindowStyle" TargetType="{x:Type Window}" BasedOn="{StaticResource {x:Type Window}}">
<Setter Property="Template" Value="{StaticResource MyWindowTemplate}" />
</Style>
现在创建窗口实例时,将样式应用于窗口并将一些内容添加到内容属性中(如有必要)添加一些ContentTemplate。
答案 1 :(得分:0)
只创建一个窗口并且:
添加两个屏幕所需的所有常用控件。
在同一个地方添加不同的堆栈面板,并将其可见性绑定到同一个标记。
实现InverseBooleanConverter并根据您处理标志的方式将其绑定到堆栈面板的可见性之一。
在启动视图之前处理该标志,即根据您当时显示的窗口将其设置为true或false。