2009-02-20 49 views
1

my question on binding in general開始,我想請求以下方案的幫助。WPF DataBinding - 來自重複控制按鈕的火災事件

我有一個對象集合(imageFileData)通過ListBox控件中的DataTemplate顯示。該控件綁定到ObservableCollection。集合和模板都在我的應用程序xaml和xaml.cs文件中定義。動態添加項目到集合按預期工作,並在我的列表框中顯示一個新的模板項目。好。

我希望能夠做的事情之一是通過單擊DataTemplate中定義的按鈕從集合中刪除特定的項目。定義按鈕的Click處理程序允許我處理事件,但我不知道在哪裏獲取與模板化按鈕相關的imageFileData對象。我的按鈕的事件處理程序顯然將按鈕作爲發件人和一組RoutedEventArgs傳遞,但我無法弄清楚如何將這些數據與集合中的某個項目關聯起來,以便將其刪除。

任何人都可以幫助我,或者我註定要尷尬和無果的谷歌搜索,因爲我不知道從哪裏開始? )

由於 ZS

回答

5

用於生成項目將在數據中的ButtonDataContext(它從容器繼承 - 你的情況一ListBoxItem):

private void ButtonClicked(object sender, EventArgs e) 
{ 
    var button = sender as Button; 
    var imageFileData = button.DataContext as ImageFileData; 

    ... 
} 
+0

肯特,你是一位明星 - 從一個週末爲我節省了一段時間,想知道如何找到答案。謝謝。 – ZombieSheep 2009-02-20 16:01:57

0

另一種方法是將可視化樹擴大到ListBoxItem(包含您在datatemplate中定義的所有元素)。 當您的ListBoxItem包含點擊按鈕時,您可以輕鬆獲取並刪除ListBoxItem的數據。

發現向上走向視覺樹的示例hereGetObjectDataFromPointhereFindAncestor中。