Laden...

XAML-Dateien zusammenführen bzw. vererben

Erstellt von Jack2000 vor 15 Jahren Letzter Beitrag vor 15 Jahren 2.968 Views
J
Jack2000 Themenstarter:in
43 Beiträge seit 2008
vor 15 Jahren
XAML-Dateien zusammenführen bzw. vererben

Hallo

Kann man 2 XAML-Dateien zusammenführen? Ich habe nämlich eine Vorlage (Rahmen), die ich für jedes Fenster haben möchte. Jetzt kommen individuell nur noch in der Mitte des Fensters bestimte Steuerelemente hinzu. Wie wird so ein Verweis auf eine andere Datei gemacht?

Datei 1:
<Window ......>
<Grid>
*Hier soll jedesmal von Datei 2 (immer unterschiedlich) Code nachträglich hinkommen*
</Grid>
</Window>

Datei 2:
<Grid.RowDefinitions>
.....
<Button...>
<Label...>
...

Oder gibt es in XAML Vererbung, dass ich das vererbte Fenster einfach nutzen kann?

354 Beiträge seit 2004
vor 15 Jahren

Das was du willst ist wohl das, was wir von ASP.NET als MasterPages kennen. Dieses Konzept wird eigenständig in WPF nicht unterstützt, aber es gibt dazu einen netten Artikel, der dir weiterhelfen sollte:

WPF "Master Page" like functionality

.NET GUI - Die Community für grafische Oberflächen unter .NET
Jetzt kostenlos besorgen: .NET BlogBook
Norbert Eder
DasBackup

J
Jack2000 Themenstarter:in
43 Beiträge seit 2008
vor 15 Jahren

Ehrlich gesagt, ist mir das ein wenig zu kompliziert. Ich blicke da leider nicht durch.

In der Zwischenzeit habe ich etwas gefunden, das in die Richtung geht, was ich suche
Siehe hier: [gelöst] XAML wird zu unübersichtlich; Auslagern in andere XAML Dateien

Allerdings kann ich keinen ganzen Code da unterbringen sondern nur einzelen Controls. Der größte Nachteil ist, das ich keine Namen an die Controls vergeben kann. Das ist schlecht, da ich die Controls ja nicht mehr im Code ansprechen kann.

Weiß jemand vielleicht etwas mehr zu diesem Ansatz, das ich auch Namen und andere Attribute setzen kann. Denn eigentlich gefällt mir dieser Ansatz sehr gut und entspricht dem, wie ich mir solch eine Verknüpfung auch vorstelle.

B
21 Beiträge seit 2008
vor 15 Jahren

Da XAML ein XML Dialekt ist müsste es ja alles unterstützen was XML auch so kann. Z.B. XInclude.

Dem ist aber leider nicht so.

XAML ist eine XML ähnlich Sprache aber eben nicht XML.

Folgenden Code habe ich ausprobiert:


<Window x:Class="Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:xi="xmlns:xi="http://www.w3.org/2003/XInclude"
    Title="Window1" Height="300" Width="300">
    <Window.Resources>
        <xi:include href="styles.xaml"/>
    </Window.Resources>
</Window>

Interessanterweise funtionieren aber andere XML Attribute wie xml:space


<TextBlock xml:space="preserve">Leerzeichen werden auch akzeptiert</TextBlock>

6.862 Beiträge seit 2003
vor 15 Jahren

XAML ist eine XML ähnlich Sprache aber eben nicht XML.

Dem muss ich wiedersprechen, XAML ist ne ganz normale XML Sprache wie jede andere auch. Das XInclude nicht verstanden wird ist ein fehlendes Feature des XAML Parsers, das ändert aber nichts dran das XAML XML ist. XInclude ist ja eh ein eher junges Feature dass allgemein noch wenig Unterstützung findet. Der aktuelles FireFox blickt das z.B. auch net, trotzdem kann man net sagen dass der keinen XML Parser hat.

Baka wa shinanakya naoranai.

Mein XING Profil.

B
21 Beiträge seit 2008
vor 15 Jahren

Ok dann liegt es am XAML Editor in VisualStudio. Denn der normale XML Editor in VisualStudio versteht XInclude. (Wird z.B. im Guidance Automation Toolkit verwendet um XML Definitionen für SoftwareFactories zu erstellen.)

Aber sowohl der XAML Editor, also auch der XAML Designer in VisualStudio sind eh kaum zu gebrauchen.