我有以下ProductList模板snipet
<Style x:Key="ProductListStyle" TargetType="{x:Type s:SurfaceListBox }">
<Setter Property="Background" Value="{DynamicResource {x:Static s:SurfaceColors.ListBoxItemBackgroundBrushKey}}" />
<Setter Property="SelectionMode" Value="Single" />
<Setter Property="Height" Value="234" />
<Setter Property="ItemTemplateSelector">
<Setter.Value>
<sc:ProductListTemplateSelector>
<sc:ProductListTemplateSelector.NormalItemTemplate>
<DataTemplate>
<StackPanel RenderTransformOrigin="0.5, 0.5"
Margin="7,0,0,0"
MinWidth="171" MaxWidth="171"
MinHeight="235" MaxHeight="235">
<Image Margin="14,21,21,11" Source="{Binding XPath=@Image}"
Height="149" Width="101" />
<TextBlock Text="{Binding XPath=@Name}"
MaxWidth="116"
FontSize="12"
Margin="21,0,21,21"
FontFamily="Segoe360"
TextAlignment="Center"
TextWrapping="Wrap"
Foreground="{DynamicResource {x:Static s:SurfaceColors.ListBoxItemForegroundBrushKey}}"
HorizontalAlignment="Center" />
</StackPanel>
</DataTemplate>
</sc:ProductListTemplateSelector.NormalItemTemplate>
我需要使用我的用户控件(如
)替换此样式的DataTemplate<local:MyUserControl>
当我的Itemsource设置了myUserControl的集合时,只保留部分我没有显示我的控件
答案 0 :(得分:1)
通常我只是在Resources
中添加DataTemplate。如果数据模板是全局的,则可以是<Window.Resources>
或<App.Resources>
;如果模板仅应用于指定的范围,则可以是FrameworkElement.Resources
。例如,将模板添加到ListView.Resources
只会在特定的ListView中应用模板。
<Window.Resources>
<DataTemplate DataType="{x:Type local:ProductModel}">
<local:MyUserControl />
</DataTemplate>
</Window.Resources>
作为旁注,您的原始问题让我相信您将ListView绑定到MyUserControl
个对象的集合。我真的不建议这样做,但如果是这种情况,你可以在你的DataTemplate中使用ContentControl
,并将Content
绑定到你的对象,它应该正确显示。
<ContentControl Content="{Binding }" />