Как применить стиль DataTemplate с помощью DataTrigger - PullRequest
0 голосов
/ 17 октября 2011

Я пытаюсь применить ContentTemplate на основе значения Binding.Проблема в том, что он не работает.

У меня есть шаблон по умолчанию, который называется TemplateA, и я хочу отобразить стиль, основанный на значении, связанном с данными - будь то TemplateA или TemplateB.

Если я комментируюИз шаблона по умолчанию ни один шаблон не выбран.

Я проверил свое значение в базе данных, значение в порядке.

Вы видите, где я иду не так?

Вот ListDataView

<CollectionViewSource x:Key="ListDataView" />

Он расположен в разделе ресурсов окна, ListDataView присоединен к ObservableCollection в коде.

<DataTemplate x:Key="TemplateA">
    <TextBlock Text="Template A" />
</DataTemplate>

<DataTemplate x:Key="TemplateB">
    <TextBlock Text="Template B" />
</DataTemplate>

    <ContentControl x:Name="LISTINGCONTROLA">
    <ContentControl.Style>
        <Style TargetType="{x:Type ContentControl}">
            <Setter Property="ContentTemplate" Value="{StaticResource TemplateA}" />
            <Style.Triggers>
                <DataTrigger Binding="{Binding Source={StaticResource ListDataView}, Path=ListType}" Value="TEMPLATEA">
                    <Setter Property="ContentTemplate" Value="{StaticResource TemplateA}" />
                </DataTrigger>
                <DataTrigger Binding="{Binding Source={StaticResource ListDataView}, Path=ListType}" Value="TEMPLATEB">
                    <Setter Property="ContentTemplate" Value="{StaticResource TemplateB}" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </ContentControl.Style>
</ContentControl>

Ответы [ 2 ]

1 голос
/ 17 октября 2011

Проблема, скорее всего, связана с тем, что ваша привязка указывает на свойство на самом CollectionViewSource, а у этого класса нет свойства с именем ListType, поэтому нет значения для привязки (следовательно, всегда используется значение по умолчанию)).

Где находится свойство ListType, к которому вы пытаетесь привязаться?

1 голос
/ 17 октября 2011

Использование WPF DataTemplateSelector может помочь http://www.switchonthecode.com/tutorials/wpf-tutorial-how-to-use-a-datatemplateselector

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...