Quelle est la façon la plus simple de partager des ressources entre des UserControls dans une bibliothèque de contrôles Utilisateur WPF?
Il y a un WPF de Contrôle de l'Utilisateur de la bibliothèque et de deux (ou plus) les Contrôles de l'Utilisateur. J'ai besoin d'utiliser le même style à la fois les commandes de l'utilisateur. Comment puis-je partager ce style?
Par exemple:
C'est le style:
<Style x:Key="customLabelStyle" TargetType="Label">
...
</Style>
De contrôle de l'utilisateur Un:
<UserControl x:Class="Edu.Wpf.Example.UserControlA"
...xmlns stuff... >
<Grid>
... some xaml markup...
<Label Style="{StaticResource customLabelStyle}"/>
</Grid>
</UserControl>
UserControl B:
<UserControl x:Class="Edu.Wpf.Example.UserControlB"
...xmlns stuff... >
<Grid>
... some another xaml markup...
<Label Style="{StaticResource customLabelStyle}"/>
</Grid>
</UserControl>
Alors, comment puis-je partager ce style entre les contrôles de l'utilisateur dans la bibliothèque, sans participation de l'application de l'app.ressources xaml dictionnaire?
Mise à JOUR
Je peux ajouter des Thèmes\Générique.xaml dans ma bibliothèque et à définir le style. Mais dans ce cas je dois utiliser ComponentResourceKey comme la clé du style. Droit? C'est long et pas très pratique d'expression...
OriginalL'auteur sedovav | 2011-07-20
Vous devez vous connecter pour publier un commentaire.
Vous pouvez définir les ressources partagées dans un autre
ResourceDictionary
, puis de les fusionner dans votreUserControl
Ressources à l'aide de MergedDictionaries.OriginalL'auteur CodeNaked
Dire que vous avez une ressource en définissant les couleurs, comme ceci:
Et une autre définition de certains styles de base comme ceci:
Vous pouvez ensuite ajouter vos ressources de l'Application.xaml de l'Application.Ressources balise comme indiqué ici:
Puis, dans tous vos UserControls, vous pouvez utiliser les styles ou les brosses comme StaticResources comme votre exemple de code montre.
Il est possible de le lier à d'autres modules d'Application.xaml en utilisant la convention suivante lors de l'ajout d'ResourceDictionaries: <ResourceDictionary Source="pack://application:,,,/<YourModule>;la composante/<YourFolder>/Couleurs.xaml"/>
tant il est plugin bibliothèque, je ne peux pas utiliser des liens dans l'application principale
OriginalL'auteur Espen Medbø
J'ai trouvé la solution qui fonctionne au moment de la création de trop (au moins dans VS2010) :
Cette propriété attachée peut être appliquée à un FrameworkElement. Imaginez le customLabelStyle est défini dans les Styles.xaml dictionnaire de l'Edu.Wpf.Exemple de projet. Donc, ce style peut être appliqué de la manière suivante:
UserControl.Resources
. C'est mieux géré par les ReSharper.OriginalL'auteur sedovav