J'essaie de définir l'application ResourceDictionary actuelle de WPF par programmation. (J'ai un projet WindForms, donc pas de "App.xaml" pour faire ça pour moi).Comportement étrange de Visual Studio lors de la définition du dictionnaire de ressources d'application
Note: Si quelqu'un sait comment lier l'équivalent d'un Application.Resources à un ElementHost et tous ses contrôles enfants hiérarchie, tel est l'objectif ultime ici.
j'ai ajouté à mon code:
Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("/Middlewerks;component/Resources.xaml", UriKind.RelativeOrAbsolute) });
Maintenant, il fonctionne parfaitement dans l'application, le style est très bien (i.e. .: Les arrière-plans de Grids sont rouges Il est juste un style de test.).
Mais si j'ouvre ce formulaire dans le concepteur, Visual Studio devient fou. Toute la fenêtre utilise mon style!
Voici une capture d'écran: http://localhostr.com/files/8368cc/Failure.jpg La partie cool est que j'ai trouvé comment éditer le skin bleu laid de Visual Studio 2010. La partie triste est que cela ne rendra pas mes clients heureux quand ils développent avec mon contrôle. N'hésitez pas à l'essayer et dites-moi comment je devrais mettre en œuvre mes ressources sans tout visser.
Code XAML: (montré en capture d'écran)
EDIT: Voici ma solution temporaire, très hackish pour que je puisse continuer à développer. C'est vraiment une douleur que "Application.Current" fonctionne sur Visual Studio.
if (Application.Current.MainWindow == null || !Application.Current.MainWindow.Title.EndsWith(" - Microsoft Visual C# 2010 Express"))
{
Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("/Middlewerks;component/Resources.xaml", UriKind.RelativeOrAbsolute) });
}
En bref, Application.Current affecte Visual Studio, ce qui est extrêmement ennuyeux. Essayez d'avoir un contrôle de formulaire en faisant "Application.Current.Shutdown()" dans son constructeur. Si ce formulaire est ouvert, votre solution sortira toujours en charge. Assez stupide. – Lazlo