J'ai un C# (2008/.NET 3.5) la classe de la bibliothèque de l'assemblée qui prend en charge WPF (basé sur http://dotupdate.wordpress.com/2007/12/05/how-to-add-a-wpf-control-library-template-to-visual-c-express-2008/). J'ai créé plusieurs fenêtres, et je suis en train d'essayer de créer un style de jeu pour eux. Cependant, comme c'est une bibliothèque de classe (au lieu d'une application WPF), je n'ai pas une application.xaml (et de ses contenus Demande et à l'Application correspondante.Ressources) dans lequel stocker ces styles pour l'accès mondial.
Donc: Comment puis-je créer un haut-niveau de l'ensemble de définitions de style qui va être vu par tous les fichiers xaml dans l'assemblée, étant donné que je n'ai pas d'application.xaml (voir ci-dessus)? Et/ou il est possible d' ajouter un travail d'application.xaml pour une bibliothèque de classe?
Pour info, j'ai essayé de créer un ResourceDictionary dans un ResourceDictionary.fichier xaml, et l'inclure dans chaque fenêtre à l'intérieur d'une Fenêtre.Ressources de bloc". Qui s'est avéré pour résoudre le style des Boutons, etc... mais pas pour l'affichage de la Fenêtre. Je peux mettre " Style="{StaticResource MyWindowStyle}"' dans la Fenêtre d'ouverture du bloc, et il compile et s'affiche dans le VS la fenêtre de création d'amende, mais au cours d'une exécution, je reçois un parse exception (MyWindowStyle n'a pas pu être trouvé; je devine que Visual Studio voit le dictionnaire inclus après la ligne en question, mais la LCR n'a plus de choses de manière séquentielle et n'a donc pas chargé ResourceDictionary encore).
Merci pour les idées, mais toujours pas aller... apparemment une bibliothèque de classe ne prend PAS en charge le générique.xaml utilisation implicitement. J'ai ajouté des génériques.xaml pour mon projet de bibliothèque de classes et de définir son Action de Construire de la "Ressource". Il contient:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style TargetType="{x:Type Window}" x:Key="MyWindow">
<Setter Property="Background" Value="Black"/>
</Style>
</ResourceDictionary>
La fenêtre xaml que je veux utiliser le thème ressemble à ceci:
<Window x:Class="MyAssembly.ConfigureGenericButtons"
x:ClassModifier="internal"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Style="{StaticResource MyWindow}"
Title="ConfigureGenericButtons">
...Buttons, etc...
</Window>
Bien que la VS la Conception de la fenêtre n'affiche pas la fenêtre à l'aide de la Mafenêtre style (c'est à dire fond noir), il compile fine et démarre. Toutefois, lorsque l'application contenant cette bibliothèque de classe qui fait un appel que les causes de cette fenêtre à l'écran, j'obtiens un XamlParseException:
Cannot find resource named '{MyWindow}'.
J'ai aussi essayé en laissant le paramètre de Style, pour voir si la fenêtre serait d'utiliser le style par défaut (et j'ai essayé à la fois avec le x:Clé générique.xaml inclus et sans). Pas d'erreurs, mais rien de défini dans le générique.xaml n'a pas montré non plus.
Suis-je en train de faire quelque chose de mal ici, ou d'autres idées sur la façon dont on pourrait l'autoriser pour le commun des styles personnalisés pour être utilisé sur une Fenêtre (c'est à dire, sans avoir à définir les styles dans chaque Fenêtre du xaml) -- avec l'avertissement que ce n'est PAS une application?