不同主体的WPF数据模板
本文关键字:数据 WPF 主体 | 更新日期: 2023-09-27 18:12:49
如您所知,有一种方法可以将DataTemplate绑定到特定的DataType。这正是我想从System.DirectoryServices.AccountManagement
中得到的UserPrincipal
和GroupPrincipal
我的问题是访问类型。
xmlns:ds="clr-namespace:System.DirectoryServices.AccountManagement;assembly=System.DirectoryServices.AccountManagement"
[…]
<Window.Resources>
<DataTemplate DataType="ds:UserPrincipal">
<StackPanel>
<TextBlock Text="{Binding DisplayName}" />
</StackPanel>
</DataTemplate>
<DataTemplate DataType="ds:GroupPrincipal">
<StackPanel>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</Window.Resources>
为什么这个不行?是否有另一种可能性来显示这些属性根据对象的数据类型?
DataTemplate的DataType
属性需要一个显式的{x:Type ...}
表达式。
这是因为它的类型是object
,与之相反,例如样式的TargetType
属性是Type
类型。如果没有{x:Type ...}
,属性值只是一个字符串。
<DataTemplate DataType="{x:Type ds:UserPrincipal}">
<StackPanel>
<TextBlock Text="{Binding DisplayName}"/>
</StackPanel>
</DataTemplate>
<DataTemplate DataType="{x:Type ds:GroupPrincipal}">
<StackPanel>
<TextBlock Text="{Binding Name}"/>
</StackPanel>
</DataTemplate>