2009-09-07 8 views
0

Je ne sais pas comment utiliser une ressource de style d'application définie dans le code. J'ai défini:Utiliser Application.Resources dans la classe

<Application.Resources> <Style x:Key="OrangeButton" TargetType="{x:Type Button}"> 

J'utilise cette ressource dans la section XAML de ma demande comme:

<Button Name="Button_Start" style="{StaticResource OrangeButton}" Margin="0"> 

et il fonctionne très bien, et je peux aussi changer le style de bouton par code

Button_Start.Style = CType(FindResource("RedButton"), Style) 

mais uniquement dans le fichier VB qui a été créé automatiquement lorsque j'ai créé mon nouveau projet. Si j'ajoute un nouveau fichier de classe et d'essayer faire la même chose, il dit:

Name 'FindResource' is not declared 

Mon problème est donc, comment utiliser des ressources d'application dans tous les différents fichiers de classe dans mon application.

Peter

Répondre

3

La méthode FindResource est définie par la classe FrameworkElement, il ne sera disponible que si votre classe étend que ou si vous avez une instance de FrameworkElement à partir duquel commencer votre recherche de ressources.

Cependant, si vous savez que votre ressource réside au niveau Application, vous pouvez utiliser TryFindResource ou Resources comme suit (C#, mais devrait être facile d'en déduire la VB):

object resource; 

if (Application.Current.TryFindResource("RedButton", out resource)) 
{ 
    Style indirectStyle = (Style)resource; 
} 

//or use this 
Style directStyle = Applications.Current.Resources["RedButton"] as Style; 
0

Merci pour la répondre, je ne suis pas sûr de comprendre tout ce que vous écrivez, mais je l'ai pour travailler maintenant avec le code

MyButton.Style = CType(Application.Current.Resources("GreenButton"), Style) 

Très agréable. Peter

Questions connexes