将DataTemplate(资源)中的TextBlock绑定到已检查单选按钮的内容

时间:2010-07-21 03:43:10

标签: silverlight xaml

我在资源数据模板中有一个TextBlock:

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

我想与已检查的单选按钮Content绑定:

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

如果选择了代码单选按钮,那么我希望文本变为Text={Binding Code}

请帮助,谢谢。

2 个答案:

答案 0 :(得分:1)

假设这是由viewmodel支持的,那么你应该设置你的viewmodel:

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"; }
}

然后设置你的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>

CheckBox上的绑定将导致更新viewmodel上的boolean属性,进而通知文本框更新其绑定值。

答案 1 :(得分:0)

我在资源中创建了2个DataTamplate,我从后面的代码中切换了TreeView的ItemTemplate

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