BasedOn = “{StaticResource {x: Type TextBox}}” dans Code Derrière pour Style

Comment pouvez-vous définir ce qui suit dans le code derrière?

 

J’utilise un thème fusionné dans App.xaml. Cela fonctionne très bien pour tous les contrôles, mais lorsque je définis un style pour quelque chose, par exemple TextBox , le style de thème n’est pas capté à moins que j’utilise BasedOn comme ci-dessus, mais le style par défaut de TextBox .

Maintenant, je crée un DataGridTextColumn dans le code derrière et je ne peux pas obtenir la partie BasedOn pour fonctionner pour EditingElementStyle

 Style editingStyle = new Style(typeof(TextBox)); editingStyle.BasedOn = ...?; 

Aucune suggestion? De même, existe-t-il un moyen d’obtenir le style de thème au lieu du style par défaut appliqué sans utiliser BasedOn?

Merci

Essaye ça:

 editingStyle.BasedOn = (Style) FindResource(typeof (TextBox)) 

Et je ne sais pas comment vous pouvez le faire appliquer le style de thème sans spécifier BasedOn . Si tel est le cas, j’aimerais aussi le savoir …

Cela devrait fonctionner:

 Style baseStyle = new Style(typeof(TextBox)); Style editingStyle = new Style(typeof(TextBox)); editingStyle.BasedOn = baseStyle; 

Vous pouvez aussi le faire dans le constructeur:

 Style editingStyle = new Style(typeof(TextBox), baseStyle); 

J’aime la réponse de Pavlo Glazkov , mais elle ne comstack pas.

FindResource est membre (non statique) de FrameworkElement . Il est nécessaire d’identifier le contexte de la demande de recherche.

Je recommande donc ceci:

 style.BasedOn = (Style)frameworkElement.FindResource(typeof(TextBox));