我在资源数据模板中有一个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}
。
请帮助,谢谢。
答案 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;