我需要在控件中定义的数据模板中重用已定义为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中没有定义内联的客户数据模板?
答案 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