私はこの単純なコードを使用しています。アイデアは、タブヘッダーのアイコンがビューモデルの内容に基づいて変更されるということです。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>
コントロールのコードとxamlをTabItemHeaderとアイコンリソースで表示できますか?私は似たようなデータトリガーを試してみました。 datatriggerでTabItemHeaderのヘッドセットだけを変更して、データトリガーやアイコンに問題があるかどうかを確認することもできます – Nikolay
コードサンプルが追加されました。その間、私はValueConverterを使ってこれを修正しました。私はデータトリガを好むだろう。 – Michael