2011-10-14 4 views
8

यह थोड़ा हास्यास्पद है कि मुझे इसका एक सरल जवाब नहीं मिल रहा है। मेरा लक्ष्य एप्लिकेशन चल रहा है, जबकि एक नया छवि नियंत्रण संलग्न करना है।सी # डब्ल्यूपीएफ रन टाइम पर मुख्य विंडो पर नियंत्रण जोड़ें

img = new System.Windows.Controls.Image(); 
img.Margin = new Thickness(200, 10, 0, 0); 
img.Width = 32; 
img.Height = 32; 
img.Source = etc; 

Ive की कोशिश की

this.AddChild(img);// says must be a single element 
this.AddLogicalChild(img);// does nothing 
this.AddVisualChild(img);// does nothing 

यह रूपों के साथ एक तत्व जोड़ने के लिए इस मुश्किल कभी नहीं था। मैं इस नए तत्व को मुख्य विंडो (अन्य नियंत्रण नहीं) में कैसे जोड़ सकता हूं ताकि यह दिखाया जा सके।

यह हल है, मैं ग्रिड मुख्य नाम है, और वहाँ से मैं तक पहुँचने के लिए बच्चों का श्रेय कर रहा था और ऐड समारोह

main.children.add(img); 

<Window x:Class="Crysis_Menu.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded" AllowsTransparency="False" Background="White" Foreground="{x:Null}" WindowStyle="SingleBorderWindow"> 
    <Grid Name="main"> 
     <Button Content="Run" Height="23" HorizontalAlignment="Left" Margin="12,12,0,0" Name="btnRun" VerticalAlignment="Top" Width="151" Click="btnRun_Click" /> 
     <TextBox Height="259" HorizontalAlignment="Left" Margin="12,40,0,0" Name="tbStatus" VerticalAlignment="Top" Width="151" /> 
    </Grid> 
</Window> 

उत्तर

3

अपने मामले में this क्या है? आप कोशिश this.Content = image; या this.Children.Add(image);

यदि आपका this वास्तव में एक Window है, आपको पता होना चाहिए Window केवल एक ही बच्चा है, जो आप Content में डाल दिया हो सकता है कर सकते हैं। यदि आप Window में कई आइटम चाहते हैं, तो आमतौर पर आप कुछ उपयुक्त कंटेनर डालते हैं (उदाहरण के लिए, Grid या StackPanel) विंडो की सामग्री के रूप में, और इसमें बच्चों को जोड़ें।

+0

यह मुख्य विंडो है: http://screensnapr.com/v/OROEvt.png इसमें कोई बच्चा विशेषता नहीं है। मुझे इसे ग्रिड में जोड़ने की ज़रूरत है, वह तत्व जो बटन और टेक्स्ट बॉक्स को पकड़ रहा है, जिसे आप इस तस्वीर में देखते हैं – Drake

+0

हां, विंडो में केवल सामग्री है। आपकी खिड़की की सामग्री क्या है? आपको खिड़की में नहीं, बल्कि उचित आंतरिक कंटेनर में जोड़ना चाहिए। लेआउट प्रबंधन कैसे काम करता है :-) – Vlad

10

आपके पास विंडो के नीचे केवल एक मूल तत्व होना चाहिए। इसका उपयोग करके छवि जोड़ना। AddChilda छवि को विंडो के बच्चे के रूप में जोड़ता है, लेकिन आपके पास शायद कुछ अन्य बच्चे परिभाषित हैं (उदाहरण के लिए ग्रिड)। इस बच्चे (उदाहरण में ग्रिड) के लिए एक नाम दें और उसके बाद कोड में पीछे छवि ग्रिड

उदाहरण के लिए जोड़:

<Window> 
<Grid x:Name="RootGrid"> 

</Grid> 
</Window> 

तब कोड में उपयोग

RootGrid.AddChild(img); 
1

पीछे Vlad को समाधान मिला। मैंने इसका इस्तेमाल किया:

var grid = this.Content as Grid; 

// or any controls 
Label lblMessage = new Label 
{ 
    Content = "I am a label", 
    Margin = new Thickness(86, 269, 0, 0) 
}; 

grid.Children.Add(lblMessage); 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^