gpt4 book ai didi

c# - 点击背景时 Viewport3D 鼠标事件不会触发

转载 作者:行者123 更新时间:2023-11-30 16:13:24 24 4
gpt4 key购买 nike

我设置了一个带有 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 背景的点击?

最佳答案

就像你写的那样,它不会被解雇。

我通过在边界上定义事件并将视口(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 .......
}
}

关于c# - 点击背景时 Viewport3D 鼠标事件不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21750692/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com