类似的WPF Windows

时间:2018-05-04 05:53:17

标签: wpf windows stack panel

我有WPF应用程序和2个具有相似结构的Windows(一切都相同:菜单,标题,工具栏,只有在中间一个堆栈面板是其他的,在一个窗口中有10个TextFields,Button和其他控件,另一个有这个堆栈面板中的其他控件。我可以复制另一个窗口,但是我复制了代码。我怎么能解决这个问题?谢谢。

2 个答案:

答案 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)

只创建一个窗口并且:

  1. 添加两个屏幕所需的所有常用控件。

  2. 在同一个地方添加不同的堆栈面板,并将其可见性绑定到同一个标记。

  3. 实现InverseBooleanConverter并根据您处理标志的方式将其绑定到堆栈面板的可见性之一。

  4. 在启动视图之前处理该标志,即根据您当时显示的窗口将其设置为true或false。