Así que estoy tratando de utilizar un control de usuario de WPF para generar una tonelada de imágenes a partir de un conjunto de datos, donde cada elemento en el conjunto de datos podría producir una imagen ...Dibujo de un control de usuario de WPF con DataBinding a una imagen
I Espero poder configurarlo de tal manera que pueda usar el enlace de datos WPF, y para cada elemento en el conjunto de datos, crear una instancia de mi control de usuario, establecer la propiedad de dependencia que corresponde a mi elemento de datos, y luego dibujar el control de usuario a una imagen, pero estoy teniendo problemas para que todo funcione (no estoy seguro de si mi problema es el enlace de datos o el dibujo)
Disculpe por el volcado masivo de código, pero he estado tratando de conseguirlo trabajando por un par de horas, y WPF simplemente no le gusto (que aprender en algún momento, aunque ...)
Mi Control de Usuario se ve así:
<UserControl x:Class="Bleargh.ImageTemplate"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:c="clr-namespace:Bleargh"
x:Name="ImageTemplateContainer"
Height="300" Width="300">
<Canvas>
<TextBlock Canvas.Left="50" Canvas.Top="50" Width="200" Height="25" FontSize="16" FontFamily="Calibri" Text="{Binding Path=Booking.Customer,ElementName=ImageTemplateContainer}" />
<TextBlock Canvas.Left="50" Canvas.Top="100" Width="200" Height="25" FontSize="16" FontFamily="Calibri" Text="{Binding Path=Booking.Location,ElementName=ImageTemplateContainer}" />
<TextBlock Canvas.Left="50" Canvas.Top="150" Width="200" Height="25" FontSize="16" FontFamily="Calibri" Text="{Binding Path=Booking.ItemNumber,ElementName=ImageTemplateContainer}" />
<TextBlock Canvas.Left="50" Canvas.Top="200" Width="200" Height="25" FontSize="16" FontFamily="Calibri" Text="{Binding Path=Booking.Description,ElementName=ImageTemplateContainer}" />
</Canvas>
</UserControl>
Y he añadido una propiedad de dependencia del tipo de "reserva" para mi control de usuario que estoy esperando que será la fuente de los valores de enlace de datos:
public partial class ImageTemplate : UserControl
{
public static readonly DependencyProperty BookingProperty = DependencyProperty.Register("Booking", typeof(Booking), typeof(ImageTemplate));
public Booking Booking
{
get { return (Booking)GetValue(BookingProperty); }
set { SetValue(BookingProperty, value); }
}
public ImageTemplate()
{
InitializeComponent();
}
}
Y estoy usando el siguiente código para representar el control:
List<Booking> bookings = Booking.GetSome();
for(int i = 0; i < bookings.Count; i++)
{
ImageTemplate template = new ImageTemplate();
template.Booking = bookings[i];
RenderTargetBitmap bitmap = new RenderTargetBitmap(
(int)template.Width,
(int)template.Height,
120.0,
120.0,
PixelFormats.Pbgra32);
bitmap.Render(template);
BitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bitmap));
using (Stream s = File.OpenWrite(@"C:\Code\Bleargh\RawImages\" + i.ToString() + ".png"))
{
encoder.Save(s);
}
}
EDITAR:
Debo añadir que el proceso funciona sin ningún tipo de error, pero termino con un directorio lleno de imágenes en blanco, no texto ni nada ... Y he confirmado el uso del depurador que mi objetos de reserva se llenan con los datos adecuados ...
EDIT 2:
hizo algo que debería haber hecho hace mucho tiempo, estableció un fondo en mi lienzo, pero que no cambiaron la imagen de salida en absoluto, así que mi problema definitivamente tiene que ver con mi código de dibujo (aunque también puede haber algún problema con mi enlace de datos)
Gracias por la información. No estoy usando OnLoad en absoluto, pero los otros dos consejos solucionaron mi problema ... Muchas gracias ... Nuevo, algunos de los XAML fueron totalmente a la hora del almuerzo , pero solo estaba tratando de obtenerlo renderizado, arreglaré parte de eso ahora ... Gracias otra vez – LorenVS
Una recompensa bien ganada si alguna vez lo vi. – RandomEngy
No sé. Esta respuesta es un poco corta y no es así. muy claro. Tal vez f lo revisó y lo extendió un poco ... – Will