C# - WPF-Steuerelement hinzufügen zu main-Fenster zur Laufzeit
Es ist ein bisschen lächerlich, ich kann nicht finden, eine einfache Antwort auf diese.
Mein Ziel ist, bringen Sie ein neues Bild zu Steuern, während die Anwendung ausgeführt wird.
img = new System.Windows.Controls.Image();
img.Margin = new Thickness(200, 10, 0, 0);
img.Width = 32;
img.Height = 32;
img.Source = etc;
Ive versucht,
this.AddChild(img);//says must be a single element
this.AddLogicalChild(img);//does nothing
this.AddVisualChild(img);//does nothing
Es war noch nie so schwierig, fügen Sie ein element mit Formen.
Wie kann ich einfach das neue element, um das Hauptfenster (und nicht ein anderes Steuerelement), sodass es zu zeigen.
Gelöst, das ich den Namen der grid-main, und von dort war ich in der Lage, den Zugriff auf die Kinder-Attribut, und die hinzufügen-Funktion
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>
InformationsquelleAutor Drake | 2011-10-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie nur ein root-element unter dem Fenster. Hinzufügen das Bild mit dieser.AddChilda fügt das Bild als Kind von Fenster, aber wahrscheinlich haben Sie einige andere Kind definiert(Netz-zum Beispiel). Geben Sie einen Namen für dieses Kind (Raster im Beispiel) und dann in der code-behind-füge das Bild in das Raster
Beispiel :
Dann in der code-behind verwenden
InformationsquelleAutor Kiril Popov
Was ist
this
in Ihrem Fall? Sie können versuchenthis.Content = image;
oderthis.Children.Add(image);
Wenn Ihr
this
ist in der Tat einWindow
sollten Sie wissen, dassWindow
können nur ein einziges Kind, welches Sie inContent
. Wenn Sie möchten, dass mehrere Elemente inWindow
, in der Regel stellen Sie einen geeigneten Behälter (beispielsweiseGrid
oderStackPanel
) Fenster Inhalt hinzufügen und Kinder.Ja, das Fenster hat nur Inhalte. Was ist dein Fenster den Inhalt als? Sollten Sie nicht das Fenster, sondern die entsprechende innere container. Das ist, wie das layout-management funktioniert 🙂
InformationsquelleAutor Vlad
Vlad bekam die Lösung. Ich habe es benutzt :
InformationsquelleAutor aloisdg