繁体   English   中英

如何在WPF C#代码中向表单添加控件/元素?

[英]How to add controls / Elements to a form in the WPF C# code?

有没有一种方法可以像Win Forms C#中那样添加控件? Button b = new Button(); 然后像Form1.Controls.Add(b);一样添加它

我无法在WPF中执行此操作,因为Window类中没有Controls属性。 我怎样才能做到这一点。 我读到的只是放置一个面板,将其停靠以填充,然​​后在其中使用:

myPanel.Children.Add(b);

但是后来又浮现在我身上。 如何创建和添加面板并将其停靠以填充?

如果我使用Panel p = new Panel(); 它标志着错误。 以及如何将面板添加到MainWindow?

您可以向下面的窗口中添加一个堆栈面板。

StackPanel myPanel = new StackPanel();
myWindow.Content = myPanel;

就像下面的@HighCore一样,在代码隐藏中添加控件并不干净。 尽可能使用XAML,并避免在代码后面添加控件

您可以像在XAML中一样在C#中创建任何结构。

var p = new Panel();

上面的方法不起作用,因为Panel是一个抽象类。 您可以执行以下操作:

var p = new StackPanel();
var g = new Grid();
var wp = new WrapPanel();
var dp = new DockPanel();
//Etc.

在这里查看所有面板: http : //msdn.microsoft.com/zh-cn/library/system.windows.controls.panel(v=vs.110).aspx

<Window ...>
    <StackPanel>
        <TextBox/>
    </StackPanel/>
</Window>

等价于(来自您的MainWindow.xaml.cs):

var sp = new StackPanel();
sp.Children.Add(new TextBox);
Content = sp;

编辑:只是要清楚一点,如果本质上是动态的,则您只想在C#中创建UI。 如果您知道会有哪些字段,请始终使用XAML。 它是WPF的HTML。 在网页背后编码所有内容,相当于在网络设计中发送空白HTML文件并使用JavaScript创建所有内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM