2011-05-17 25 views

cevap

17

Öyle gibi TreeViewItem çift tıklama etkinliğini bastırmak olabilir:

xaml:

<TreeView DockPanel.Dock="Left" TreeViewItem.PreviewMouseDoubleClick="TreeViewItem_PreviewMouseDoubleClick"> 
    <TreeViewItem Header="Node Level 1" IsExpanded="True" > 
     <TreeViewItem Header="Node Level 2.1" > 
      <TreeViewItem Header="MyItem" /> 
     </TreeViewItem> 
     <TreeViewItem Header="Node Level 2.2"> 
      <TreeViewItem Header="MyItem" /> 
     </TreeViewItem> 
    </TreeViewItem> 
</TreeView> 

kodu:

private void TreeViewItem_PreviewMouseDoubleClick(object sender, MouseButtonEventArgs e) 
{ 
    //this will suppress the event that is causing the nodes to expand/contract 
    e.Handled = true; 
} 

GÜNCELLEME

msdn docs göre: Bu yönlendirilmiş olay bir eleman ağacının üzerinden bir tünel rotayı takip gibi görünse de

, aslında her UIElement tarafından eleman ağacı boyunca yükseltilir doğrudan yönlendirilir olaydır ... fare çift tıklamalarını yönetmek isteyen kontrol yazarları, ClickCount ikiye eşit olduğunda PreviewMouseLeftButtonDown olayını kullanmalıdır. Bu, öğesinin, iş parçacığının durumuna numaralı durumda doğru şekilde yayılmasına neden olur; bu durumda öğesindeki öğenin başka bir öğesi olayı işler.

emin değilim eğer bu sorunlarınız ya da değil, ancak onun yerine PreviewMouseLeftButtonDown bunu MSDN şekilde yapmak ve kullanacağız neden:

xaml:

<TreeView DockPanel.Dock="Left" TreeViewItem.PreviewMouseLeftButtonDown="TreeView_PreviewMouseLeftButtonDown"> 
    <TreeViewItem Header="Node Level 1" IsExpanded="True"> 
     <TreeViewItem Header="Node Level 2.1" > 
      <TreeViewItem Header="MyItem" /> 
     </TreeViewItem> 
     <TreeViewItem Header="Node Level 2.2"> 
      <TreeViewItem Header="MyItem" /> 
     </TreeViewItem> 
    </TreeViewItem> 
</TreeView> 

kodu:

private void TreeView_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
{ 
    if (e.ClickCount > 1) 
    { 
     //here you would probably want to include code that is called by your 
     //mouse down event handler. 
     e.Handled = true; 
    } 
} 

bunu test ettik ve onu ben

tıklayın kaç kez olursa olsun çalışır
+0

Sadece denedim ama hala yapıyor. TreeViewItem.PreviewMouseDoubleClick' yerine 'PreviewMouseDoubleClick' yazdım, fark eder mi? –

+0

Verdiğim örnek iki şekilde çalışır. Belki kodunuzu gönderebilirsiniz, belki bir şey müdahale ediyor? –

+0

Teşekkürler, yeni bir projede denememe izin verin. –

İlgili konular