Lier le bloc de texte à deux propriétés
J'ai un Textblock qui est lié à une propriété ItemsSource de la collection. J'aimerais afficher deux propriétés de cette classe dans la même textblock, mais il semble que je ne peut effectuer une liaison à la fois.
J'ai actuellement ceci:
Text="{Binding Title}"
mais je veux je veux ajouter une autre propriété, donc en théorie, il serait:
Text="{Binding Title - Author}"
avec la sortie ressemblant à "Shakespeare - Roméo et Juliette". J'ai essayé d'ajouter une virgule, un autre de liaison et d'autres choses, mais ils aboutissent à une exception levée (par exemple Inconnue Texte de l'attribut sur l'élément TextBlock).
À la fois les propriétés vient de la même classe, donc je ne vais pas besoin d'avoir deux sources de données.
source d'informationauteur Skoder
Vous devez vous connecter pour publier un commentaire.
Malheureusement silverlight est manquant un peu de pièces que WPF a qui peut gérer cela. J'irais probablement la voie de l'utilisation d'un convertisseur de valeurs que vous pouvez passer à la classe qui contient le Titre et l'Auteur de mettre en forme le texte.
Voici le code:
Et certains XAML:
L'inconvénient de cette manière, c'est que vous n'obtiendrez pas le texte à mettre à jour si le changement des propriétés (c'est à dire vous implémenter INotifyPropertyChanged) puisque le champ est lié à la classe.
Comme suggéré dans les commentaires sur la question, vous pouvez également créer une troisième propriété qui les combine. Ce serait refuser multibindings ou des convertisseurs de valeur.
Utilisation de celui-ci.. Il fonctionne Parfaitement.
la sortie sera comme ceci,
OOPS:Balagurusamy
Sonne comme vous avez besoin d'un MultiBinding.
J'ai trouvé un MultiBinding exemple de projet pour Silverlight sur le net, il y a un certain nombre d'entre eux, je crois, simplement Google. Si vous ne pouvez pas trouver un faites le moi savoir, je vais vous envoyer celui que nous utilisons.
Personne ne sait si une liaison est venue à SL 5? Vous pouvez utiliser un 3ème propriété, de même, n'oubliez pas de feu, il est
PropertyChanged
événement quand jamais, soit de ses mandants ensuite, les changements de liaison sera fine.Si le Texte que vous souhaitez afficher dans l'INTERFACE utilisateur est en lecture seule, Vous pouvez essayer primordial ToString de votre modèle de vue de l'objet et de retourner la valeur combinée.
retour Titile + ":" + Auteur;
Une solution très simple serait d'avoir une propriété dans votre ViewModel comme ceci:
et se lient dans le code xaml:
Vous pouvez utiliser l'extension spéciale de CodeProject
Exemple