如何在windows.resources中指定多个DataTemplate以供ContentControl使用

时间:2013-09-05 08:55:44

标签: wpf xaml datatemplate contentcontrol

如何在windows.resources中指定多个DataTemplate以供ContentControl使用? 我的代码:

<Window.Resources>
    <DataTemplate x:Key="CustomerTemplate" DataType="{x:Type local:Customer}">
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="{Binding FirstName}"/>
            <TextBlock Text=" ("/>
            <TextBlock Text="{Binding Occupation}"/>
            <TextBlock Text=")"/>
        </StackPanel>
    </DataTemplate>
    <DataTemplate x:Key="PersonTemplate" DataType="{x:Type local:Person}">
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="{Binding FirstName}"/>
            <TextBlock Text=" - "/>
            <TextBlock Text="{Binding LastName}"/>
        </StackPanel>
    </DataTemplate>
</Window.Resources>

非常感谢你!

2 个答案:

答案 0 :(得分:1)

使用DataTemplateSelector返回您想要应用的Datatemplate ..

<ContentControl ContentTemplateSelector="{StaticResource MyTemplateSelector}"/>

这里MYtemplateselector是DataTemplateSelector,在select的select()方法中你可以检查绑定到contentcontrol的属性并返回相应的Datatemplate。

由于

答案 1 :(得分:0)

x:Key移除DataTemplate并尝试此操作:

<ContentControl Name="CustomerContentControl">
    <local:Customer />
</ContentControl>

<ContentControl Name="PersonContentControl">
    <local:Person />
</ContentControl>

在本文中,Josh Smith显示了如何访问DataTemplate中的元素:

How to use FindName with a ContentControl