2012-03-20 9 views
0

私はこの単純なコードを使用しています。アイデアは、タブヘッダーのアイコンがビューモデルの内容に基づいて変更されるということです。DataTemplateトリガーが機能しない

<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> 
+0

コントロールのコードとxamlをTabItemHeaderとアイコンリソースで表示できますか?私は似たようなデータトリガーを試してみました。 datatriggerでTabItemHeaderのヘッドセットだけを変更して、データトリガーやアイコンに問題があるかどうかを確認することもできます – Nikolay

+0

コードサンプルが追加されました。その間、私はValueConverterを使ってこれを修正しました。私はデータトリガを好むだろう。 – Michael

答えて

0

ただの推測。 Binding="{Binding ProtocolViewModel.IsDakoOrigin}" - >Binding="{Binding IsDakoOrigin}" IsDakoOriginはテンプレートのDataContextのプロパティのように見えるためです。また、出力ウィンドウをチェックして、アプリケーションのバインドエラーをデバッグすることもできます。

+0

拘束力のある例外はありません。私のデータコンテキストには、IsDakoOriginプロパティを持つProtocolViewModelというプロパティがあります。 – Michael

関連する問題