嵌套数据模板

时间:2012-07-01 16:35:55

标签: wpf datatemplate

我需要在控件中定义的数据模板中重用已定义为reource的现有数据模板

...这是我的客户数据模板作为资源,因此它可以是可重用的对象

Customer DataTemplate:

<ResourceDictionary ... >

    <DataTemplate DataType="{x:Type Model:Customer}">

        <StackPanel Orientation="Vertical" Width="Auto">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition/>
                        <ColumnDefinition Width="140" />
                    </Grid.ColumnDefinitions>                   

                    <Grid.RowDefinitions>
                        <RowDefinition Height="20"/>
                        <RowDefinition Height="25"/>
                    </Grid.RowDefinitions>

                    <TextBox Text="{Binding CustomerName}"
                        Grid.Column="0" Grid.Row="0" />
        </StackPanel>

    </DataTemplate>

</ResourceDictionary>

现在我需要在用户控件数据模板中重用上面定义的Customer数据模板

<UserControl x:Class="MyCustomerControl"

    <UserControl.Resources >

        <DataTemplate DataType="{x:Type frnri:CustomerViewModel}">

            question: How can I reuse customer data template here?

        </DataTemplate>


    </UserControl.Resources>

</UserControl>

是否有可能在MyCustomerControl中没有定义内联的客户数据模板?

1 个答案:

答案 0 :(得分:0)

将您的datatemplate放在App.xaml中,然后它将在整个程序中可用。

按如下方式声明资源

<Application.Resources>
<DataTemplate DataType="{x:Type Model:Customer}" x:Key="customerTemplate">

    <StackPanel Orientation="Vertical" Width="Auto">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition/>
                    <ColumnDefinition Width="140" />
                </Grid.ColumnDefinitions>                   

                <Grid.RowDefinitions>
                    <RowDefinition Height="20"/>
                    <RowDefinition Height="25"/>
                </Grid.RowDefinitions>

                <TextBox Text="{Binding CustomerName}"
                    Grid.Column="0" Grid.Row="0" />
    </StackPanel>

</DataTemplate>
</Application.Resources>

然后您可以在UserControl中引用它,如

<ListBox ItemTemplate="{StaticResource customerTemplate}" />

同样适用于ResouceDictionary