我用一个Viewport3D设置了一个MouseEventHandler
[...]
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);
}
当一个物体被点击的时候,它会很好的工作。我的期望是:如果没有单击对象(因为用户在后台单击),则结果为null。但是实际上,mainViewport_MouseUp-方法甚至没有被调用。
我的问题是:如何检测到Viewport3D背景上的点击?
发布于 2014-02-13 12:46:47
正如你所写的,它不会被解雇。
我通过在边界上定义事件并将viewport放入边框来解决这个问题。样本来自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 .......
}
}
https://stackoverflow.com/questions/21750692
复制相似问题