2013-05-16 101 views
4

我是WPF中的事件問題。假設我有一個底層數據模型和一個樹視圖來呈現數據。我想要做的最簡單的事情是,當我點擊一個項目時,我會做一些與該項目相關的基礎數據。WPF TreeView項目點擊

我嘗試使用事件Textblock,但發件人對象只是Textblock本身,我無法訪問基礎數據。

現在我也用MouseLeftButtonDown事件TreeViewItem這樣的嘗試:

<TreeView.ItemContainerStyle> 
    <Style TargetType="{x:Type TreeViewItem}"> 
     <EventSetter Event="MouseLeftButtonDown" Handler="itemClicked"/> 
    </Style> 
</TreeView.ItemContainerStyle> 

但我並沒有得到調用的處理程序。

那我該怎麼做呢?有沒有某種標準方法?

感謝先進!

+0

使用SelectedItemChanged事件,請注意,鍵盤也會獲得調用的事件 – makc

+0

@makc感謝您的貢獻!但是我不希望處理程序在所選項目更改時被調用,但是當用戶雙擊該項目時。 –

+0

這不是你在問題中所描述的,你嘗試過MouseDoubleClick事件嗎? – makc

回答

5

MouseLeftButtonDown事件是一個冒泡事件,它在它的路徑中的某個地方處理了我的猜測選擇器。 您可以使用snoop查看誰處理了該事件。 使用PreviewMouseLeftButtonDown/SelectedItemChanged或在你的情況下MouseDoubleClick將解決問題。

<TreeView> 
    <TreeView.ItemContainerStyle> 
    <Style TargetType="{x:Type TreeViewItem}"> 
     <EventSetter Event="MouseDoubleClick" 
       Handler="itemDoubleClicked"/> 
    </Style> 
    </TreeView.ItemContainerStyle> 
</TreeView>