C#WPF在运行时将控件添加到主窗口

Dra*_*ake 12 c# wpf children

我有点无法找到一个简单的答案,这有点荒谬.我的目标是在应用程序运行时附加新的图像控件.

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

我试过了

this.AddChild(img);// says must be a single element
this.AddLogicalChild(img);// does nothing
this.AddVisualChild(img);// does nothing
Run Code Online (Sandbox Code Playgroud)

添加带有表单的元素从未如此困难.我怎样才能简单地将这个新元素附加到主窗口(而不是另一个控件),以便它显示出来.

解决了它,我将网格命名为main,从那里我可以访问children属性和add函数

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>
Run Code Online (Sandbox Code Playgroud)

小智 13

您应该在窗口下只有一个根元素.使用this.AddChilda添加图像作为窗口的子项添加图像,但您可能还定义了一些其他子项(例如Grid).给这个孩子命名(示例中为Grid),然后在后面的代码中将图像添加到Grid

示例:

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

</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

然后在代码背后使用

RootGrid.Children.Add(img);
Run Code Online (Sandbox Code Playgroud)


Vla*_*lad 6

什么是this你的情况?您可以尝试this.Content = image;this.Children.Add(image);

如果您this确实是Window,您应该知道Window只能有一个孩子,您将其放入Content. 如果您希望在 中Window包含多个项目,通常您会放置一些适当的容器(例如,GridStackPanel)作为 Window 的内容,并向其中添加子项。