Вы можете просто определить общий шаблон в файле App.xaml в элементе «Ресурсы».
Определите его в App.xaml:
<DataTemplate x:Key="MySharedTemplate">
<StackPanel Margin="10" >
<TextBlock Text="{Binding title}"/>
<TextBlock Text="{Binding Description}"/>
</StackPanel>
</DataTemplate>
Доступ к нему в коде:
#region FindResource
/// <summary>Get a template by the type name of the data.</summary>
/// <typeparam name="T">The template type.</typeparam>
/// <param name="initial">The source element.</param>
/// <param name="type">The data type.</param>
/// <returns>The resource as the type, or null.</returns>
private static T FindResource<T>(DependencyObject initial, string key) where T : DependencyObject
{
DependencyObject current = initial;
if (Application.Current.Resources.Contains(key))
{
return (T)Application.Current.Resources[key];
}
while (current != null)
{
if (current is FrameworkElement)
{
if ((current as FrameworkElement).Resources.Contains(key))
{
return (T)(current as FrameworkElement).Resources[key];
}
}
current = VisualTreeHelper.GetParent(current);
}
return default(T);
}
#endregion FindResource
Используйте его в своем интерфейсе:
DataTemplate newTemplate = null;
string templateKey = "MySharedTemplate";
try { newTemplate = FindResource<DataTemplate>(this, templateKey); }
catch { newTemplate = null; }
if (newTemplate != null)
{
this.ListBox1.ItemTemplate = newTemplate;
}