2010-07-21 5 views
0

J'ai un TextBlock dans le modèle de données de ressources:Bind TextBlock dans DataTemplate (ressources) au contenu du bouton radio vérifié

<DataTemplate x:Key="MyDataTemplate" ItemsSource="{Binding MySource}"> 
    <TextBlock x:Name="MyText" Text="{Binding ???}" /> 
</DataTemplate> 

que je veux lier avec Content de bouton radio vérifié:

<RadioButton GroupName="MyGroup" Content="Code" /> 
<RadioButton GroupName="MyGroup" Content="Description" /> 

si le bouton radio Code est sélectionné, je souhaite que le texte devienne Text={Binding Code}.

S'il vous plaît, aidez, merci.

Répondre

0

J'ai créé 2 DataTamplate en ressources, et je passe mon ItemTemplate TreeView à partir du code derrière

if (ViewByCodeRadioButton.IsChecked == true) 
    MyTreeView.ItemTemplate = Resources["MyDataTemplateCode"] as DataTemplate; 
else 
    MyTreeView.ItemTemplate = Resources["MyDataTemplateDesc"] as DataTemplate; 
1

À supposer que ce modèle bénéficie d'un viewmodel, vous définirez votre viewmodel ainsi:

bool isCodeChecked; 
public bool IsCodeChecked 
{ 
    get { return isCodeChecked; } 
    set 
    { 
     if(value == isCodeChecked) return; 
     isCodeChecked = value; 
     // raise notification that ***MyText*** property has changed (INotifyPropertyChanged interface) 
    } 

public string MyText 
{ 
    get { return IsCodeChecked ? "Code" : "Description"; } 
} 

ensuite mis en place votre XAML:

<RadioButton GroupName="MyGroup" Content="Code" IsChecked="{Binding IsCodeChecked, Mode=OneWayToSource}" /> 

<DataTemplate x:Key="MyDataTemplate" ItemsSource="{Binding MySource}"> 
    <TextBlock x:Name="MyText" Text="{Binding MyText}" /> 
</DataTemplate> 

La liaison sur la CheckBox entraînera la propriété booléenne sur le viewmodel à mettre à jour, qui à son tour notifiera la zone de texte pour mettre à jour sa valeur liée.

+0

Il ne fonctionne pas, Jay. MyText a été modifié et notifié, mais mon TreeView n'affiche pas de texte lié (vide). –

+0

Quel 'TreeView'? – Jay

+0

mon RadTreeView utilise ce MyDataTemplate comme ItemTemplate. –

Questions connexes