Триггер DataTemplate не работает - PullRequest
0 голосов
/ 20 марта 2012

У меня есть этот простой кусок кода, который просто не работает.Идея состоит в том, что значок в заголовке вкладки будет меняться в зависимости от содержимого модели представления.

<DataTemplate DataType="{x:Type ProtocolViewModels:ProtocolTabItemContentViewModel}">
    <TabItem>
        <TabItem.Header>
            <Controls:TabItemHeader x:Name="tabItemHeader" 
                Header="{Binding TabHeader}" 
                Icon="{DynamicResource ProtocolCustom_TabIcon}"
                CloseCommand="{Binding CloseCommand}"/>
        </TabItem.Header>
        <LegacyProtocolViews:ProtocolTabItemContentView/>
    </TabItem>
    <DataTemplate.Triggers>
        <DataTrigger Binding="{Binding ProtocolViewModel.IsDakoOrigin}" Value="True">
            <Setter TargetName="tabItemHeader" Property="Icon" Value="{DynamicResource ProtocolDako_TabIcon}"/>
        </DataTrigger>  
    </DataTemplate.Triggers>
</DataTemplate>

Свойство модели представления уведомляет представление об изменении.Разве это не должно работать?

Редактировать

TabItemHeader.xaml.cs

    public static readonly DependencyProperty IconProperty =
        DependencyProperty.Register("Icon", typeof(BitmapImage), typeof(TabItemHeader), new PropertyMetadata(default(BitmapImage)));

    public BitmapImage Icon
    {
        get { return (BitmapImage)GetValue(IconProperty); }
        set { SetValue(IconProperty, value); }
    }

TabItemHeader.xaml

<UserControl x:Class="Workstation.Resources.Controls.TabItemHeader"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d"
             x:Name="persistingTabItem">
    <!-- skipped code -->
    <Image Source="{Binding ElementName=persistingTabItem, Path=Icon}"/> 
    <!-- skipped code -->
</UserControl>

1 Ответ

0 голосов
/ 20 марта 2012

Просто предположение. Binding="{Binding ProtocolViewModel.IsDakoOrigin}" -> Binding="{Binding IsDakoOrigin}", поскольку похоже, что IsDakoOrigin является свойством DataContext вашего шаблона. Вы также можете проверить окно вывода, а затем отладить приложение на наличие ошибок привязки

...