2010-10-06 6 views
2

J'ai cette application qui intègre un changement de langage dynamique. En fonction de la culture sélectionnée, les chaînes de l'application vont changer. Les chaînes traduites et leurs valeurs d'origine proviennent des fichiers de ressources. J'utilise des liaisons pour attacher les valeurs de ressources aux boutons, étiquettes, etc. La plupart de cette liaison se produit dans le code derrière.Utilisation de Multibinding.StringFormat dans codebehind

Je suis en mesure de concaténer des chaînes localisées avec des données en utilisant la propriété Binding.StringFormat:

mybinding.StringFormat = "# {0}"; 

pour « Nombre d'articles ». Mon problème est que j'ai maintenant besoin de concaténer deux (ou plusieurs) chaînes localisées dans le code derrière. Je me suis vite rendu compte que je pouvais utiliser MultiBinding et y ajouter mes liaisons, tout en conservant la façon dont les choses fonctionnent actuellement, cependant, en utilisant MultiBinding.StringFormat ne semble pas fonctionner. J'essaie d'utiliser myMultiBinding.StringFormat = "{0} {1}"; pour insérer un espace entre les deux valeurs de liaison, mais il apparaît simplement vide lorsqu'il est lié à l'étiquette "Salutations".

Binding b = GetBinding("HelloWorld"); 
Binding b2 = GetBinding("Name"); 

MultiBinding multib = new MultiBinding(); 
multib.StringFormat = "{0} {1}"; 
multib.Bindings.Add(b); 
multib.Bindings.Add(b2); 
Greetings.SetBinding(Label.ContentProperty, multib); 

et voici la fonction GetBinding() qui saisit une fixation en fonction de la valeur du chemin:

public Binding GetBinding(string name) 
{ 
    Binding binding = new Binding(); 
    binding.Source = mySource; 
    binding.Path = new PropertyPath(name); 
    return binding; 
} 

Aussi, je noter que je utilise .NET 4. Ne semble pas fonctionner dans Xaml non plus. J'ai également essayé ceci dans. NET 3.5 après que cela n'ait pas fonctionné dans 4.0. Les deux liaisons enfants fonctionnent ... si je fournis un convertisseur, les valeurs apparaissent. Je préfère utiliser la propriété StringFormat.

Répondre

Questions connexes