그래서 데이터 세트의 각 항목이 이미지를 생성 할 데이터 집합에서 이미지의 톤을 생성하는 WPF 사용자 정의 컨트롤을 사용하려고 해요 ...는 이미지
I에 데이터 바인딩으로 WPF UserControl을 그리기 내가 WPF 데이터 바인딩을 사용할 수 있고 데이터 셋의 각 항목에 대해 내 사용자 정의 컨트롤의 인스턴스를 만들고 내 데이터 항목에 해당하는 종속성 속성을 설정 한 다음 사용자 컨트롤을 이미지로 가져 오는 데 문제가 있습니다. 모든 작업을 수행하는 데 문제가 있습니다. 데이터 바인딩 또는 이미지 그리기가 내 문제인지 여부는 알 수 없습니다.
대용량 코드 덤프는 죄송합니다. 몇 시간 동안 일하고 WPF 그냥 날 좋아하지 않는다 (...하지만 어떤 점에서 배울 수있다)
내 사용자 컨트롤은 다음과 같습니다 : I가 유형 "예약"의 종속성 속성을 추가 한
<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>
그리고
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();
}
}
내가 컨트롤 렌더링하려면 다음 코드를 사용하고 있습니다 :
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);
}
}
0123을 나는 데이터 바인딩 된 값에 대한 원천이 될 것입니다 바라고 내 사용자 컨트롤
편집 :
나는 프로세스가 어떤 오류없이 작동한다는 것을 덧붙여 야하지만 텍스트 나 아무것도 아닌 일반 흰색 이미지로 가득 찬 디렉토리로 끝난다. 그리고 나는 디버거를 사용하여 확인했다. 나는 오래 전에 했어야
뭔가나요, 내 캔버스에 배경을 설정하지만 출력 이미지를 변경하지 않은 : 예약 객체는
EDIT 2 ... 적절한 데이터로 채워되고있다 전혀, 내 문제는 내 드로잉 코드 (비록 내 데이터 바인딩에 문제가있을지라도)와 어떻게 든 관계가있다.
와우! 정보를 제공해 주셔서 감사합니다. OnLoad를 전혀 사용하지 않고 있지만 다른 두 가지 힌트가 내 문제를 해결했습니다 ... 감사합니다. 톤 ... XAML의 새로운 일부는 완전히 점심 식사에 나갔습니다. , 그러나 나는 단지 그것을 렌더링하려고 노력했다. 나는 지금 그 중 일부를 고쳐 놓을 것이다 ... Thanks again again – LorenVS
내가 그것을 본다면 잘 번만 현상금 – RandomEngy
나는이 대답이 좀 짧고 isn ' 어쩌면 내가 분명해. f를 수정하고 조금 확장했습니다 ... – Will