4 votes

Héritage XAML (pas de code-behind)

Comment héritage accompli en XAML ?

Est-il vrai que seul le code-behind peut être hérité et pas le .xaml ( Question connexe ) ? Est-ce que l'inclusion du parent dans le contrôle de l'enfant espace de noms la seule façon de le faire ?

Il semble qu'il n'y ait pas d'"héritage" général à proprement parler dans XAML . Il existe questions sur le fait d'hériter UserControl etc., mais pas héritage général .

Problème :

J'ai 2 fichiers xaml, File1.xaml y File2.xaml qui se ressemblent beaucoup. Puis-je créer un SuperFile.xaml et y mettre l'essentiel du code suivant ?

<UserControl ... >
    <Grid>
        <Grid.RowDefinitions ... />

        <DockPanel ... >
            <ToolBar ... >
                <!-- Some Buttons here:
                     File1.xaml to contain the Buttons "View" and "Export"
                     File2.xaml to contain the Buttons "Edit" and "Delete"
                 -->
            </ToolBar>
        </DockPanel>

        <igDP:XamDataGrid MouseDoubleClick="xamDataGrid1_MouseDoubleClick" ... />
    </Grid>
</UserControl>

Les seules choses qui différer en File1.xaml y File2.xaml sont :

  1. Button dans le ToolBar (voir le commentaire dans le code)
  2. El propriétés de XamDataGrid principalement les événements (ce qu'ils font dans chaque cas).

Comment puis-je y parvenir ? Devrais-je écrire les fichiers code-behind pour les deux enfants ? séparément ?

5voto

Rachel Points 49408

Vous pouvez utiliser un Dictionnaire des ressources

Mettez tous vos modèles et styles génériques dans un fichier ResourceDictionary alors vous avez vos deux UserControls d'importer que ResourceDictionary

<UserControl.Resources>
    <ResourceDictionary Source="BaseStylesAndTemplates.xaml" />
</UserControl.Resources>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X