Diviser un gros XAML dans nombre de Sous-fichiers XAML
Dans mon WPF4 de Bureau de l'application il y a un gros bloc avec menu latéral qui se répète à chaque fenêtre et prend environ 70 lignes de code XAML. Afin d'améliorer la réutilisation du code, je souhaite partager fichier XAML dans deux fichiers:
- XAML fichier qui contient le code pour le menu latéral (≈70 lignes)
- De Base du fichier XAML qui contient des «include/référence» pour XAML fichier avec le menu de barre de code
Ce que j'ai compris, il y a deux façons de mettre en œuvre mon problème:
- Utilisation ResourceDictionary
- Utilisation UserControl /CustomControl
Mes questions sont:
- Quelle est la différence entre ResourceDictionary et UserControl? Pourriez-vous me donner des exemples où je dois utiliser UserControl et où ResourceDictionary?
- Pourriez-vous nous donner un exemple de code complet comment inclure/importer le contenu d'un XAML fichier à d'autres?
P. S. Voici un exemple de code que je veux exporter pour séparer XAML fichier:
<Border Style="{StaticResource Body_SideBarMenu_Border_Settings}">
<StackPanel Style="{StaticResource Body_SideBarMenu}">
<TextBlock Style="{StaticResource Body_SideBarMenu_Title}"
Text="{x:Static res:Resources.WinApp_SideBarMenu_Title}" />
<TextBlock x:Name="SideBar_WinReports"
Style="{StaticResource Body_SideBarMenu_Item}"
Text="{x:Static res:Resources.DashListMarker}">
<Hyperlink KeyboardNavigation.TabIndex="12"
Style="{StaticResource Body_SideBarMenu_Item_Hyperlink}"
Click="Call_WinReports_Click">
<TextBlock Text="{x:Static res:Resources.WinApp_ModuleName_Reports}" />
</Hyperlink>
</TextBlock>
</StackPanel>
</Border>
OriginalL'auteur Mike B. | 2011-02-12
Vous devez vous connecter pour publier un commentaire.
ResourceDictionary est juste un conteneur pour vos styles/templates etc. Si vous avez vraiment un choix entre l'utilisation d'un style (et de référencement à travers un ResourceDictionary) ou un UserControl.
Afin de faire la différence entre les deux, posez-vous la question: êtes-vous à la simple mise en oeuvre d'un nouveau look pour certaines de contrôle existants, ou vous mettre en place quelque chose de vraiment nouveau, ce qui est plus que juste une liste (ou une Frontière, ou une zone de liste modifiable etc.)? Dans le premier cas, l'utilisation d'un style; dans le second cas, créez un nouveau contrôle utilisateur.
Spécifiquement pour votre cas, je pencherais pour un UserControl.
Exemple de Code (mais pas complet)
(Veuillez noter qu'un modèle pour le code suivant peut être inséré avec VS "ajouter un nouveau contrôle utilisateur")
Xaml:
.cs:
Maintenant, vous pouvez utiliser le contrôle comme ça:
OriginalL'auteur Vlad
Si vous pouvez obtenir vos mains sur l'Expression Studio, Expression Blend, vous pouvez simplement cliquez droit sur n'importe quel contrôle et la convertir en un contrôle de l'utilisateur. Aussi facile que cela.
Utilisateur, les contrôles sont bons pour le fractionnement du fichier XAML. En substance, il est utilisé pour redéfinir le comportement d'un contrôle existant.
Cependant, avec les Contrôles de l'Utilisateur, vous pouvez définir ensemble WPF Commandes de Mise en page et de les convertir en un Contrôle de l'Utilisateur, avec les enfants le contenu à l'intérieur d'eux. Ceci est très utile pour un projet répartis entre plusieurs développeurs, et peut également être utilisé pour émuler le comportement d'un MDI, qui est absente dans WPF.
OriginalL'auteur r3st0r3