तो मैं एक WPF उपयोगकर्ता नियंत्रण का उपयोग करने के एक डाटासेट से छवियों जहां डाटासेट में प्रत्येक आइटम एक छवि का निर्माण होगा की एक टन उत्पन्न करने के लिए कोशिश कर रहा हूँ ...एक छवि
मैं करने के लिए DataBinding के साथ एक WPF UserControl ड्राइंग मुझे आशा है कि मैं इसे इस तरह से स्थापित कर सकता हूं कि मैं डब्ल्यूपीएफ डाटाबेसिंग का उपयोग कर सकता हूं, और डेटासेट में प्रत्येक आइटम के लिए, मेरे उपयोगकर्ता नियंत्रण का एक उदाहरण बना सकता हूं, निर्भरता गुण सेट कर सकता हूं जो मेरे डेटा आइटम से मेल खाता है, और फिर ड्रा एक छवि को उपयोगकर्ता नियंत्रण है, यह हो रही है, लेकिन मैं समस्या आ रही है सभी कार्य
बड़े पैमाने पर कोड डंप के लिए खेद है (यकीन नहीं है कि क्या डेटा बाइंडिंग या छवि के लिए ड्राइंग मेरी समस्या है), लेकिन मैं इस प्राप्त करने की कोशिश कर रहा है अब कुछ घंटों के लिए काम कर रहे हैं, और डब्ल्यूपीएफ बस मुझे पसंद नहीं है (हालांकि कुछ बिंदु पर जानने के लिए ...)
मेरे उपयोगकर्ता नियंत्रण इस तरह दिखता है:
<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);
}
}
संपादित करें:
मैं जोड़ने चाहिए कि इस प्रक्रिया किसी भी त्रुटियों के बिना काम करता है, लेकिन मैं सादे सफेद छवियों से भरा एक निर्देशिका के साथ खत्म, पाठ या कुछ भी नहीं ... और मैंने पुष्टि की है डिबगर का उपयोग कर कि मेरी बुकिंग वस्तुओं उचित डेटा से भर रहे हैं किया जा रहा ...
संपादित करें 2: मैं एक लंबे समय पहले किया जाना चाहिए
कुछ किया, मेरे कैनवास पर एक पृष्ठभूमि निर्धारित करते हैं, लेकिन यह है कि उत्पादन छवि परिवर्तन नहीं किया बिलकुल नहीं, इसलिए मेरी समस्या निश्चित रूप से मेरे ड्राइंग कोड के साथ किसी भी तरह से करना है (हालांकि मेरे डेटाबेस के साथ कुछ भी गलत हो सकता है)
वाह! जानकारी के लिए धन्यवाद। मैं ऑनलोड का उपयोग नहीं कर रहा हूं, लेकिन अन्य दो संकेतों ने मेरी समस्या तय की है ... धन्यवाद एक टन ... मैं कुछ नया एक्सएएमएल लंच के लिए पूरी तरह से बाहर था , लेकिन मैं इसे प्रतिपादन करने की कोशिश कर रहा था, मैं अब इसमें से कुछ को ठीक कर दूंगा ... धन्यवाद फिर से – LorenVS
अगर मैंने इसे कभी देखा तो एक अच्छी तरह से अर्जित बक्षीस। – RandomEngy
मुझे पता नहीं है। यह उत्तर थोडा छोटा है और नहीं है ' टी बहुत स्पष्ट है। शायद मैं आपने संशोधित किया और इसे थोड़ा बढ़ा दिया ... – Will