2009-08-26 6 views
4

Pour certains contrôles utilisateur, j'ai cette liaison:Comment lier à un « x: statique » ressource en code-behind dans WPF

AppLanguage="{Binding Path=ApplicationLanguage, Source={x:Static Application.Current}}" 

Cela fonctionne pour les contrôles qui sont déclarés/instancié en XAML. Cependant, j'ai un contrôle qui est seulement instancié dynamiquement (il ne sera pas utilisé régulièrement, donc je ne veux pas qu'une instance (jusqu'à 3, en fait) engloutisse de la mémoire pour rien tout le temps. Si je manque quelque chose, je dois déclarer mes bindings en code-behind Cela fonctionne bien quand j'en ai un facile (ElementName + Path), mais dans le cas ci-dessus, je n'arrive pas à comprendre comment l'écrire en code-behind Bien sûr, dans ce cas particulier, le contrôle pouvait simplement se référer à My.Application.ApplicationLanguage, mais essayer de le faire m'a quand même rendu curieux, j'ai fait un bon nombre de recherches et je n'ai rien trouvé de similaire (peut être mes mots-clés de recherche si. :))

Répondre

5

x:Static résout juste un membre static pour vous, de sorte que vous pouvez wr ite comme:

var binding = new Binding("ApplicationLanguage"); 
binding.Source = Application.Current; 

Cela dit, je ne comprends pas pourquoi vous pensez que vous avez besoin de faire cela dans le code.

+0

Ce travail - merci. Je mettais Application.Current entre guillemets (en fait je ne sais pas si cela aurait fonctionné - j'ai eu un autre problème causé par un événement - tous corrigés maintenant.) Je le fais en code-behind parce que (Je pense) si je mets cela en XAML dans le conteneur, le contrôle de l'utilisateur est instancié, peu importe quoi. Il se peut que je manque quelque chose ici - je suis toujours en train d'explorer WPF, donc certaines choses ne sont pas toujours évidentes. :) – MetalMikester

Questions connexes