2012-09-10 26 views
0

我想單擊鼠標右鍵選擇TreeViewItem。還有就是我的XAML:如何通過TextBlock找到silverlight TreeViewItem?

<TreeView x:Name="treeView" ItemsSource ="{Binding DisplayedDocuments}" 
        SelectedItemChanged="TreeView_SelectedItemChanged" IsEnabled="True" 
        MouseRightButtonDown="treeView_MouseRightButtonDown"> 
     <sdk:TreeView.ItemTemplate> 
     <sdk:HierarchicalDataTemplate ItemsSource="{Binding Path=DisplayedSubItems}"> 
      <StackPanel Orientation="Horizontal"> 
       <Image Source="{Binding Converter={StaticResource docImageConverter}}"/> 
       <TextBlock Width="5"></TextBlock> 
       <TextBlock Text="{Binding Caption}" 
          MouseRightButtonDown="TextBlock_MouseRightButtonDown"/> 
      </StackPanel> 
     </sdk:HierarchicalDataTemplate> 
     </sdk:TreeView.ItemTemplate> 
</TreeView> 

當我點擊樹型視圖有時TextBlock.MouseRightButtonDown引起的,而不是treeView.MouseRightButtonDown。所以,我想通過TextBlock_MouseRightButtonDown中的TextBlock來獲取treeViewItem。我嘗試過這樣:

TextBlock docCaption = e.OriginalSource as TextBlock; 
    StackPanel stackPanel = docCaption.Parent as StackPanel; 

但是,stackPanel.Parent爲null。

我試圖通過名字來找到控制:

TreeViewItem treeViewItem = (TreeViewItem)treeView.FindName(docCaption.Text); 

但它返回null。

+0

什麼是你真正想達到什麼目的?你有兩個MouseRightButtonDown處理程序的原因嗎? – Krishna

+0

首先,我試圖顯示右鍵點擊當前(未選定)項目的上下文菜單。 – Roux

+0

是的,但是您是否需要在TreeView和TextBlock上使用MouseRightButtonDown? – Krishna

回答

相關問題