2014-02-13 21 views
3

我成立了一個的Viewport3D與MouseEventHandler的Viewport3D鼠標事件不火的時候,打的背景

[...] 
Main3DWindow.MouseUp += new MouseButtonEventHandler(mainViewport_MouseUp); 
[...] 
void mainViewport_MouseUp (object sender, MouseButtonEventArgs e) { 
    Point location = e.GetPosition(Main3DWindow); 
    ModelVisual3D result = GetHitTestResult(location); 
    if (result == null) { 
     _CurrentData.Unselect(); 
     return; 
    } 
    _CurrentData.SelectItemFromObjectList(result); 
} 

,並點擊一個對象時,它工作得很好。 我的期望是:如果沒有對象被點擊(因爲用戶點擊了背景)結果爲空。但實際上mainViewport_MouseUp方法甚至沒有被調用。

我的問題:如何檢測Viewport3D背景上的點擊?

回答

2

這是你寫的,它不會被解僱。

我通過在邊框上定義事件並將視口放入邊框來解決這個問題。樣品從XAML:

<Border 
       MouseWheel="mainViewport_MouseWheel" 
       MouseMove="mainViewport_MouseMove" 
       MouseLeftButtonDown="mainViewport_MouseLeftButtonDown" 
       Background="Black"> 
       <Viewport3D 
        Name="mainViewport" 
        ClipToBounds="True" 
        Grid.Row="0" 
        Grid.Column="0" 
        Grid.ColumnSpan="3" 
        Margin="0,0,0,0"> 
..... 
       </Viewport3D> 
      </Border> 

並在代碼:

private void mainViewport_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
{ 
    Point location = e.GetPosition(mainViewport); 
    try 
    { 
       ModelVisual3D result = (ModelVisual3D)GetHitTestResult(location); 
     //some code....... 
    } 
    catch 
    { 
     //some code ....... 
    } 
} 
+0

難道在你的項目這個解決方案的工作? 我有和以前一樣的問題 - 當單擊確切的border-uiElement – xelor

+0

yes時它會運行,並且當我點擊視口的空白區域時結果爲空。 BORDER位於網格內,但即使沒有網格,它也可以工作。 – het2cz

+0

這裏是一個上傳到googledrive的示例項目。你可以試試嗎? [link] https://drive.google.com/file/d/0B_gJl-kX9L6cY1BZak5ueEh1dWc/edit?usp=sharing – het2cz

相關問題