For a third party product I need to convert a ContentControl to a Bitmap. Which I thought is no problem because a ContentControl is a UIElement which can be rendered in a Bitmap.
But if I plot this Bitmap than there is no image visible.
It seems that it does not work because I have the contentControl in my Application Resources and if I try to load it it is found but all properties are null or in exception status. What is going wrong here?
This is my contentControl
<ContentControl x:Key="LocationMarker" Width="356" Height="524">
<Canvas Width="356" Height="524">
<Path Width="355.912" Height="524.355" Canvas.Left="0" Canvas.Top="-0.354675" Stretch="Fill" Fill="{DynamicResource HeaderColorBrush}" Data="...."/>
<Path Width="150" Height="200" Canvas.Left="100" Canvas.Top="50" Stretch="Fill" Fill="{DynamicResource HeaderColorBrush}" Data="..."/>
<Path Width="200" Height="170" Canvas.Left="78" Canvas.Top="300" Stretch="Fill" Fill="{DynamicResource HeaderColorBrush}" Data="..."/>
</Canvas>
Thats how I try to get it:
var contentControl = Application.Current.Resources.MergedDictionaries.SelectMany(x => x.MergedDictionaries).FirstOrDefault(x => x.Source.OriginalString.Contains("ContentControls.xaml"))?["LocationMarker"] as ContentControl;
if (contentControl != null)
{
var renderTargetBitmap = new RenderTargetBitmap(41, 74, 96, 96, PixelFormats.Pbgra32);
renderTargetBitmap.Render(contentControl);
var encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(renderTargetBitmap));
var stream = new MemoryStream();
encoder.Save(stream);}
Is a contentControl maybe the wrong type? Is the way of getting it by Resources wrong?
thats how it looks in the debugger:
Every tip is appreciated!