私のアプリケーションは、左側に TreeView を表示し、すべて同じタイプの階層的な順序付けされたアイテムを表示します。すべての項目には、2 つの値のいずれかを持つことができる依存関係プロパティがあります。この値は列挙型です。この値に応じて、左側に 2 つの UserControls のいずれかを表示します。私の考えは、両方のコントロールを挿入し、それらの不透明度を 0 に設定することでした。次に、列挙型の値に応じて不透明度をトリガーする DataTrigger を使用して Style を挿入したいと考えました。しかし、あるコントロールのプロパティに他のコントロールの DataTrigger からアクセスすることはできません。トリガーは列挙型の値を認識していないようです。
列挙型:
public enum IdentityType
{
Person,
OrganisationUnit
}
XAML:
<TreeView Grid.Column="0" Grid.Row="1" Background="AntiqueWhite" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ItemsSource="{Binding Identities}" x:Name="OiTree">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Childs}">
<TextBlock Text="{Binding}"/>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
<Controls:UcPerson Grid.Column="1" Grid.Row="1" Opacity="0">
<Controls:UcPerson.Style>
<Style TargetType="Controls:UcPerson">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Type, ElementName=OiTree.SelectedItem}" Value="Person">
<Setter Property="Opacity" Value="1"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Controls:UcPerson.Style>
</Controls:UcPerson>
<Controls:UcOrgUnit Grid.Column="1" Grid.Row="1" Opacity="0">
<Controls:UcOrgUnit.Style>
<Style TargetType="Controls:UcOrgUnit">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Type, ElementName=OiTree.SelectedItem}" Value="OrganisationUnit">
<Setter Property="Opacity" Value="1"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Controls:UcOrgUnit.Style>
</Controls:UcOrgUnit>