StackPanel与Xaml Windows Phone中的另一个用户控件中的用户控件

时间:2015-02-20 12:46:23

标签: c# wpf xaml windows-phone-8 user-controls

如何从C#代码向UserControl中的StackPanel添加子项?我应该为它创建像DependencyProperty这样的东西吗?

由于在我的UserControl中很容易为TextBlock设置Text这样的属性,我不知道如何在使用CodeBehind动态地向StackPanel添加项目时。

2 个答案:

答案 0 :(得分:1)

StackPanel仅用于最基本的布局情况。根据您的要求,使用某种ListBoxItemsControl要好得多。您可以向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);

来源: