Подобные Windows WPF - PullRequest
       7

Подобные Windows WPF

0 голосов
/ 04 мая 2018

У меня есть приложение WPF и 2 окна со схожей структурой (все одинаково: меню, заголовок, панель инструментов, только посередине одна панель стека - другая, в одном окне 10 элементов TextFields, Button и других элементов управления, а в другом - другие элементы управления в этой панели стека. Я могу скопировать одно окно в другое, но я дублирую код. Как я могу решить эту проблему? Спасибо.

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Один из способов - создать 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.

0 голосов
/ 04 мая 2018

Создайте только одно окно и:

  1. Добавьте все общие элементы управления, необходимые для обоих экранов.

  2. Добавьте разные панели стека в одном месте и свяжите их видимость с одним и тем же флагом.

  3. Реализуйте InverseBooleanConverter и привяжите его к одной из панелей стека, основываясь на том, как вы собираетесь обрабатывать флаг.

  4. Обработайте флаг перед запуском представления, т. Е. Установите его в значение true или false в зависимости от того, какое окно вы показываете в это время.

...