I have created a simple wpf application. In App.xaml, I defined two resources: one is an Image control(key is image") and another is a DataTemplate which using DynamicResource to reference the Image.
<Application.Resources> <Image x:Key="image" Source="Resource\Dock.jpg"/> <DataTemplate x:Key="dataTemplate" x:Shared="false"> <Border Background="Blue" Margin="10"> <ContentControl Content="{StaticResource image}"/> </Border> </DataTemplate> </Application.Resources>
And then in Window1.xaml file, I put 3 ContentControls to use the DataTemplate.
<StackPanel> <TextBlock Text="First"/> <ContentControl Height="150" ContentTemplate="{DynamicResource dataTemplate}"/> <TextBlock Text="Second"/> <ContentControl Height="150" ContentTemplate="{DynamicResource dataTemplate}"/> <TextBlock Text="Third"/> <ContentControl Height="150" ContentTemplate="{DynamicResource dataTemplate}"/> </StackPanel>
And then run this app, the result is that:
You can see that there is just one image shown.
But if we set x:Shared=”false” for the Image resource, like this:
<Image x:Key="image" x:Shared="false" Source="Resource\Dock.jpg"/>
And re-run the app again, this result is: