有点荒谬,我无法找到一个简单的答案。 我的目标是在应用程序运行时附加一个新的图像控件。
img = new System.Windows.Controls.Image();
img.Margin = new Thickness(200, 10, 0, 0);
img.Width = 32;
img.Height = 32;
img.Source = etc;
我试过
this.AddChild(img);// says must be a single element
this.AddLogicalChild(img);// does nothing
this.AddVisualChild(img);// does nothing
添加带有表单的元素从未如此困难。 我怎样才能简单地将这个新元素附加到主窗口(而不是另一个控件),以便它显示出来。
解决了它,我将网格命名为main,从那里我可以访问children属性和添加函数
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>
答案 0 :(得分:12)
窗口下应该只有一个根元素。使用this.AddChilda添加图像作为窗口的子项添加图像,但您可能还定义了一些其他子项(例如Grid)。给这个孩子命名(示例中为Grid),然后在后面的代码中将图像添加到Grid
示例:
<Window>
<Grid x:Name="RootGrid">
</Grid>
</Window>
然后在后面的代码中使用
RootGrid.Children.Add(img);
答案 1 :(得分:4)
您的案件中this
是什么?您可以尝试this.Content = image;
或this.Children.Add(image);
如果您的this
确实是Window
,那么您应该知道Window
只能有一个孩子,您将其放入Content
。如果您想要Window
中的多个项目,通常会将一些适当的容器(例如,Grid
或StackPanel
)作为Window的内容添加,并为其添加子项。
答案 2 :(得分:1)
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);