Dans WPF comment changer un DataTemplate du Textblock du texte de liaison dans le code?
J'ai une zone de liste dont ItemsSource est lié à une liste d'objets. La zone de liste a un ItemTemplate avec un DataTemplate contenant un TextBlock. Le textblock du Texte est lié à l'objet du Nom de la propriété (c'est à dire Text="{Binding Name}").
J'aimerais faire un bouton radio pour afficher différentes vues d'une même liste. Par exemple, permettre à un utilisateur de basculer entre le Nom de la propriété et un ID de propriété.
J'ai trouvé une réponse à Deux million trois cent quatre vingt une mille sept cent quarante mais j'ai aussi de la frontière et une zone de texte set de feuilles de style dans le modèle de données (voir le code ci-dessous).
Est de toute façon il vient d'être réinitialisé le Textblock de liaison? Je ne veux pas avoir à recréer l'ensemble du datatemplate. En fait, je ne suis même pas sûr de la façon de le faire, est-il un moyen facile de traduire xaml de code?.
Merci
Cody
<DataTemplate>
<Border Margin="0 0 2 2"
BorderBrush="Black"
BorderThickness="3"
CornerRadius="4"
Padding="3">
<TextBlock Style="{StaticResource listBoxItemStyle}"
Text="{Binding Name}" />
</Border>
</DataTemplate>
OriginalL'auteur code | 2010-06-29
Vous devez vous connecter pour publier un commentaire.
Il suffit de le rendre simple pour vous-même et utiliser deux textblocks et se cacher l'un d'entre eux.
XAML:
Code derrière:
Oui, c'est une très bonne solution compte tenu de la nécessité de lier les deux valeurs des boutons radio. (+1), Vous pourriez également être intéressé dans le cadre plus général de la solution ai-je ajouté.
OriginalL'auteur Wallstreet Programmer
Wallstreet du Programmeur solution fonctionne bien pour vous parce que vous êtes à l'aide de boutons radio. Il est cependant plus générale de la solution que j'ai pensé que je devrais mentionner pour les futurs lecteurs de cette question.
Vous pouvez modifier votre DataTemplate pour l'utilisation de la plaine "{Binding}"
Ensuite dans le code, vous n'avez pas à recréer un plein DataTemplate. Tout ce que vous avez à faire est de recréer cette:
ce qui est facile:
Ceci est particulièrement pratique si vous avez beaucoup de propriétés, même dans votre radio exemple de bouton.
OriginalL'auteur Ray Burns
Vous pouvez également utiliser un convertisseur de valeurs à choisir une propriété de vos données objet. Vous aurez besoin de se lier à l'ensemble de l'objet au lieu de propriétés individuelles. Si vos données objet implémente INotifyPropertyChanged, cette solution ne fonctionnera pas pour vous.
XAML
code derrière:
OriginalL'auteur Wallstreet Programmer