Привязать TextBlock в DataTemplate (ресурс) к переключателю Контент отмечен - PullRequest
0 голосов
/ 21 июля 2010

У меня есть 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 ]

1 голос
/ 21 июля 2010

Предполагая, что это поддерживается моделью представления, вы должны настроить свою модель просмотра следующим образом:

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 приведет к обновлению логического свойства в модели представления, что, в свою очередь, уведомит текстовое поле об обновлении своего связанного значения.

0 голосов
/ 29 июля 2010

Я создал 2 DataTamplate в ресурсах и переключаю ItemTemplate моего TreeView из кода, стоящего за

if (ViewByCodeRadioButton.IsChecked == true)
    MyTreeView.ItemTemplate = Resources["MyDataTemplateCode"] as DataTemplate;
else
    MyTreeView.ItemTemplate = Resources["MyDataTemplateDesc"] as DataTemplate;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...