मैं एक MainWindow कर रहा हूँ जो कि एक NavigationWindow है। इस MainWindow के अंदर मैं कई Pages में स्विच करना चाहता हूँ। पृष्ठों में से एक को कोड द्वारा गतिशील रूप से उत्पन्न किया जाना है, एक्सएएमएल द्वारा नहीं। जब मेरे पास पहले एक सामान्य खिड़की थी, तो मैं इस तरह से यूआई घटक जोड़ सकता था:

Button b = new Button();
b.Content = "Hello";
this.AddChild(b);

या अगर मैंने (उदाहरण के लिए) पहले इस विधि के साथ एक StackPanel जोड़ा, तो मैं इस StackPanel में बच्चों को इसके साथ जोड़ सकता हूं:

myPanel.Children.Add(b);

हालाँकि, पेज क्लास में चिल्ड्रन एट्रीब्यूट या AddChild मेथड नहीं है। अभी तक मैंने जो एकमात्र विधि पाई है:

AddVisualChild(b);

पृष्ठ दिखाता है लेकिन मुझे कोई भी घटक नहीं दिखता है जिसे मैंने इस पद्धति के साथ जोड़ा है। तो मैं बच्चों को WPF-Page में सही तरीके से कैसे जोड़ूँ?

1
Philip Feldmann 20 नवम्बर 2015, 18:48

2 जवाब

सबसे बढ़िया उत्तर

सबसे पहले, Window.AddChild अपवाद छोड़ देगा जब आप इसमें एक से अधिक ऑब्जेक्ट जोड़ेंगे, क्योंकि Window एक ContentControl है। Page केवल 1 बच्चे की अनुमति देता है। यदि आप Page.Content संपत्ति का उपयोग करके बच्चे को सेट करते हैं। इसलिए आप अपने Page एक कंटेनर जोड़ना चाहते हैं और फिर कंटेनर में बच्चों को जोड़ सकते हैं।
उदाहरण के लिए:

Button b = new Button();
b.Content = "Hello";
StackPanel myPanel = new StackPanel();
myPanel.Children.Add(b);
this.Content = myPanel;
2
Winger Sendon 20 नवम्बर 2015, 16:23

मुझे यकीन नहीं है कि यह आपके लिए काम करता है, लेकिन आप पेज की सामग्री को उपयोगकर्ता नियंत्रण में सेट करने का प्रयास कर सकते हैं। जैसे StackPanel का उपयोग करें और सभी बच्चों को इसमें जोड़ें। उसके बाद आप Stackpanel की सामग्री को Stackpanel पर सेट करते हैं।

यहाँ एक मेनविंडो के निर्माण में एक आलसी उदाहरण है।

public MainWindow()
{
    InitializeComponent();

    StackPanel panel = new StackPanel();
    Button b1 = new Button {Content = "Hello"};
    Button b2 = new Button {Content = "Hi"};

    panel.Children.Add(b1);
    panel.Children.Add(b2);

    Page page = new Page {Content = panel};

    this.Content = page;
}
2
Dave 20 नवम्बर 2015, 16:26