«шаблон» действительно не является точным определением.Я предполагаю, что вы действительно хотите иметь возможность повторного использования представлений списка.Есть несколько опций
Опция 1 (предпочтительно) Поместить каждый ListView в UserControl.Это будет отдельный XAML-файл с элементом в корне и его единственным дочерним элементом (нет необходимости в панели, поскольку у вас есть только один элемент. XAML будет выглядеть следующим образом:
<UserControl x:Class="SO.NameAndImageList"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"
>
<ListView ...>
...
</ListView>
</UserControl>
Чтобы использовать этот UserControl, определите «локальное» пространство имен для указания на ваш код:
<Window ...
xmlns:local"clr-namespace:SO">
...
<local:NameAndImageList />
...
</Window>
Опция 2 Создайте DataTemplate, который представляет пользовательский типкоторый представляет ваш список.
В коде (обычно это называется ViewModel, в модели MVVM) определите следующий тип:
public class PersonCollection : ObservableCollection<Person> { }
Ваш тип происходит от ObservableCollection of Person (класс, содержащий элемент), без добавления. Это просто псевдоним, который может понять XAML. Затем в файле app.xaml, внутрив разделе, определите следующий шаблон:
<DataTemplate TargetType="{x:Type local:PersonCollection}" x:Key="ImageAndNameTemplate">
<ListBox ...>
...
</ListBox>
</DataTemplate>
Для повторного использования просто перетащите данные PersonCollection (обычно это будут данные из DataContext) на любую панель или используйте привязку в ContentControl:
<Window ... >
<Window.DataContext>
<!-- Instantiate the data. There are many other ways to do that -->
<local:PersonCollection>
<local:Person Name="..." Image="..." />
<local:Person Name="..." Image="..." />
<local:Person Name="..." Image="..." />
...
</local:PersonCollection>
</Window.DataContext>
...
<ContentControl Content="{Binding}" ContentTemplate="{StaticResource ImageAndNameTemplate}" />
</Window>