我有一個ListBox
數據綁定到我的PersonCollection
類的集合。接下來,我爲Person
類型的對象定義了一個數據模板,其中包含一個DockPanel
,其中包含一個人姓名的TextBlock
和一個Button
以將該人從列表中刪除。它們看起來非常漂亮。遍歷WPF元素樹的問題
我面臨的問題是,當我單擊數據模板中定義的按鈕時,我無法到達列表框中的選定項目(並將其刪除)。下面是該按鈕的處理程序:
private void RemovePersonButton_Click(object sender, RoutedEventArgs e)
{
Button clickedButton = (Button)e.Source;
DockPanel buttonPanel = (DockPanel)clickedButton.Parent;
Control control = (Control)button.Parent;
}
最後創建的對象control
是null
,即我不能再進步了元素樹,所以我不能觸及名單及其SelectedItem
。這裏需要注意的重要一點是,不能簡單地通過調用它來從列表中獲取選定的項目,因爲我在窗口中有多個列表,並且所有這些列表實現相同的數據模板,即共享相同的事件處理程序刪除按鈕。
我將不勝感激所有我能得到的幫助。謝謝。
正確!很好。我不知道'DataContext`屬性。值得一提的是,我可以通過調用`VisualTreeHelper.GetParent(DependencyObject引用)`方法來查找元素樹,但這是一個更好的解決方案!謝謝。 – Boris 2010-11-30 23:18:21
我更喜歡第一個解決方案。感謝發佈! – Boris 2010-11-30 23:20:35