- 我有了一個列表框
- 列表框(MyListBox)窗口有它的DataContext
- ListBox的的ItemSource一個DataTable是:{結合}
- 列表框有一個用戶控件(的MyUserControl)作爲DataTemplate中
- 用戶控件具有單選按鈕和文本框(起初他們充滿了從數據表中的值,然後用戶可以更改它們)
- 窗口有一個提交按鈕
我想要做的是,當用戶點擊提交按鈕WPF訪問內部列表框項目具有用戶控件的ItemTemplate中
- 對於每一個列表框項,獲取值形成用戶控件的文本框和單選按鈕。
我是用這種方法對這項工作:
foreach(var element in MyListBox.Items)
{
var border = MyListBox.ItemContainerGenerator.ContainerFromItem(element)as FrameworkElement;
MyUserControl currentControl = VisualTreeHelper.GetChild(VisualTreeHelper.GetChild(VisualTreeHelper.GetChild(myBorder,0) as Border,0)as ContentPresenter,0)as MyUserControl;
//And use currentControl
}
我在列表框中使用3-5項目時實現什麼。但是當我使用更多的項目時,我發現在foreach函數中有些元素循環後,「var border」變爲「null」。
,我發現這裏的原因: ListView.ItemContainerGenerator.ContainerFromItem(item) return null after 20 items
所以,我能怎麼辦呢?我想要訪問所有項目並獲取其用戶控件的值。
感謝
感謝您的解決方案;) – Turker 2010-05-31 12:41:41