我的應用程序的屬性顯示在左側用分層有序的項目;這些都是同一類型的一個TreeView。所有項目都有一個依賴項屬性,它可以具有兩個值之一。該值是一個枚舉。根據這個值,我想顯示左邊的兩個用戶控件之一。我的想法是插入兩個控件,並將其不透明度設置爲0.然後,我想插入一個帶有DataTrigger的Style,根據枚舉值觸發不透明度。但是我無法從其他控件的DataTrigger訪問一個控件的屬性;並且觸發器似乎不能識別枚舉值。更改WPF用戶控件取決於一個TreeViewItem
枚舉:
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>
感謝您的快速回答。我認爲你是對的,DataTemplateSelector正是我所需要的。但是我現在得不到的是我如何爲一個網格設置DataTemplateSelector(或者更好的只是一個用於控制所需目的的UserControl)並且參照TreeView中的selectedItem。我已閱讀關於該主題的以下教程:[link](http://www.codeproject.com/Articles/418250/WPF-Based-Dynamic-DataTemplateSelector)[link](http://tech.pro/tutorial/807/WPF的教程如何使用的-A-datatemplateselector) –