我正在显示一些3D模型作为Model3DGroups。
它们被捕获了MouseDown事件的Viewport3D包围。

我想确定单击了哪个Model3DGroup(它们都有名称)。
我从这个开始:

        Point location = e.GetPosition(karte.ZAM3DViewport3D);
        HitTestResult hitResult = VisualTreeHelper.HitTest(karte.ZAM3DViewport3D, location);

        if (hitResult != null )
        {
            Debug.WriteLine("BREAKPOINT");
            // Hit the visual.
        }


击中WriteLine命令的断点后,我在本地视图中查找正确的变量,但找不到它。
您能帮我找出modelvisual3d所属的组需要走哪条路径吗?

这是树的屏幕截图:

最佳答案

我通过用ModelUIElement3D包围Model3DGroup来做到这一点。

<ModelUIElement3D MouseDown="ModelUIElement3D_MouseDown" x:Name="LogoMouseDown">


MouseDown函数以这种方式处理它:

    private void ModelUIElement3D_MouseDown(object sender, MouseButtonEventArgs e)
    {

            if (sender == trololo)
            {
                RaiseModelClickEvent("auditorium");
            }
            else if (sender == LogoMouseDown)
            {
                RaiseModelClickEvent("logo");
            }

    }

关于c# - WPF:如何在可视树中查找单击的3D模型所在的Model3DGroup?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3772476/

10-09 12:39