另一个 UserControl 中的 ItemTemplate 定义

ItemTemplate definition in another UserControl

我有以下用户控件来定义我的一般控件布局:

<UserControl>
    <DockPanel LastChildFill="False">
        <ListView DockPanel.Dock="Left"
                  ItemsSource="{Binding FoundResults}"
                  SelectedItem="{Binding SelectedItem}"
                  ItemTemplate="{DynamicResource FoundResultsStyle}"/>
        <ContentControl DockPanel.Dock="Top"
                        Name="WinSock"
                        Content="{Binding ElementName=BaseWindowUserControl, Path=SpecificView}" />
        <StatusBar DockPanel.Dock="Bottom">
            <StatusBarItem Content="{Binding StatusBarText, Mode=OneWay}" />
        </StatusBar>
    </DockPanel>
</UserControl>

如您所见,每个 window 的左侧都应该有一个 ListView。

我需要一种方法来在具体的用户控件中定义 ItemTemplate。

个人用户控制:

<UserControl.Resources>
    <DataTemplate x:Key="FoundResultsStyle" DataType="{x:Type Pocos:Person}">
       <StackPanel>
            <TextBlock Text="{Binding Lastname}"/>
            <TextBlock Text="{Binding Firstname}"/>
       </StackPanel>
    </DataTemplate>
</UserControl.Resources>

ListView 不使用我在 'concrete' 用户控件中定义的模板。有办法实现吗?

提前致谢!

你能做这样的事情吗,以便 DataType 在更改时 select 成为正确的模板?

<UserControl>

    <UserControl.Resources> 
        <DataTemplate DataType="{x:Type Pocos:Person}"> 
             ...
        </DataTemplate>
        <DataTemplate DataType"{x:Type Pocos:Dog}">
            ...
        </DataTemplate>
    </UserControl.Resources>


    <DockPanel LastChildFill="False">
        <ListView 
          DockPanel.Dock="Left"
          ItemsSource="{Binding FoundResults}"
          SelectedItem="{Binding SelectedItem}"/>
        <ContentControl 
          DockPanel.Dock="Top"
          Name="WinSock"
          Content="{Binding ElementName=BaseWindowUserControl, Path=SpecificView}" />
        <StatusBar DockPanel.Dock="Bottom">
            <StatusBarItem Content="{Binding StatusBarText, Mode=OneWay}" />
        </StatusBar>
    </DockPanel>

</UserControl>