如何从C#代码向UserControl中的StackPanel添加子项?我应该为它创建像DependencyProperty这样的东西吗?
由于在我的UserControl中很容易为TextBlock设置Text这样的属性,我不知道如何在使用CodeBehind动态地向StackPanel添加项目时。
答案 0 :(得分:1)
StackPanel
仅用于最基本的布局情况。根据您的要求,使用某种ListBox
或ItemsControl
要好得多。您可以向DependencyProperty
添加一个集合UserControl
并执行以下操作:
在UserControl
:
<ItemsControl ItemsSource="{Binding YourCollectionDependencyProperty, RelativeSource={
RelativeSource AncestorType={x:Type YourPrefix:YourUserControl}}}" ... />
然后,您可以将另一个集合属性数据绑定到控件外部的UserControl
:
外UserControl
:
<YourPrefix:YourUserControl YourCollectionDependencyProperty="{Binding Items}" ... />
然后添加要在UserControl
中显示的新项目就像向Items
集合中添加项目一样简单:
Items.Add(someNewObject);
请阅读MSDN上的Data Binding Overview页面,了解有关数据绑定的更多信息。
答案 1 :(得分:0)
是的,你可以做这样的事情(这只是一个例子):
TextBlock printTextBlock = new TextBlock();
printTextBlock.Text = "Hello, World!";
//MainStackPanel below is the name given to your control in xaml
MainStackPanel.Children.Add(printTextBlock);
来源: