2009-06-17 48 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