2009-06-17 30 views
0

我在我的MainWindow中放置了一个StackPanel,它在运行时动态获取新的UserControls(UserControl是一行TextBoxes和一个名为“Delete”的按钮)。 这是我如何创建用户控件:让WPF UserControl删除它自己并绑定到它的数据对象?

PersonObject p = new PersonObject; 
List.Add(p); 

UserControlLine usrCtrlLine = new UserControlLine(); 
usrCtrlLine.DataContext = p; 

StackPanel.Children.Add(usrCtrlLine); 

现在用户控件包含文本框是这样的:
文本框TextWrapping =“包装” Grid.Column =“1”文本=“{绑定路径=名字,模式=双向}”

我的问题是,我怎么可以让用户控件
- 从StackPanel中删除本身(‘被删除’)
- 删除这势必给它的PersonObject p +

非常感谢!

回答

0

我不知道我明白你在这里试图做什么......你想在StackPanel中显示人员列表?您应该使用的ItemsControl,定义其ItemsPanel为一个StackPanel,它的ItemTemplate作为UserControlLine:

<ItemsControl ItemsSource="{Binding ListOfPersons}"> 
    <ItemsControl.ItemsPanel> 
    <ItemsPanelTemplate> 
     <StackPanel IsItemsHost="True"/> 
    </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <ItemsControl.ItemTemplate> 
    <DataTemplate> 
     <my:UserControlLine/> 
    </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

要删除一个项目,你只是从人的集合中删除它,以及相关的UserControlLine也将被删除从ItemsControl(集合应该是一个ObservableCollection)

+0

感谢您的输入!我搜索了更多的关键词,并在这里找到了很好的例子:http://www.galasoft.ch/mydotnet/articles/article-2007041201.aspx – 2009-06-17 11:56:10