Lignende WPF Windows

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har WPF Application og 2 Windows med lignende struktur (alt er det samme: menu, titel, værktøjslinje, kun i den midterste en stack panel er andet, i et vindue har 10 TextFields, Button og andre kontroller, og den anden har andre kontroller i denne stakpanel. Jeg kan kopiere et vindue i andre, men jeg duplikerer kode. Hvordan kan jeg løse dette problem? Tak.

Bedste reference


En måde ville være at skabe en ControlTemplate og/eller Style for vinduet.


<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>


Når du nu opretter en vinduesinstans, anvender du stilen til vinduet og tilføjer noget indhold til indholdsegenskaben og (om nødvendigt) noget ContentTemplate.

Andre referencer 1


Opret kun et vindue og:



  1. Tilføj alle de fælles kontroller, der kræves for begge skærmbilleder.

  2. Tilføj de forskellige stakpaneler på samme sted og binde deres synlighed til det samme flag.

  3. Implementér InverseBooleanConverter og bind det til en af ​​stackpanelets synlighed baseret på hvordan du skal håndtere flag.

  4. Håndter flaget, før du starter visningen, dvs. sæt det til sandt eller falsk baseret på hvilket vindue du viser på det tidspunkt.