如您所知,有一种方法可以将DataTemplate绑定到特定的DataType。这正是我想要UserPrincipal
和GroupPrincipal
来自System.DirectoryServices.AccountManagement
我的问题是访问类型。
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>
为什么这不起作用?是否有其他可能根据对象的DataType显示这些属性?
答案 0 :(得分:3)
DataTemplate的DataType
属性需要明确的{x:Type ...}
表达式。
那是因为它的类型是object
,与之相反,例如Style的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>