Как создать ContextMenu при метаровании WPF, пока объекты Model3D коснулись только

131
21

У меня есть следующий код XAML:

<Viewport3D.ContextMenu>
<ContextMenu>
<MenuItem Header="Cut"/>
</ContextMenu>
</Viewport3D.ContextMenu>

Когда я нажимаю на Viewport3D, я получаю контекстное меню, как сделать его видимым только тогда, когда касаюсь объекта Model3D, который помещается в мой элемент Viewport3D. (У меня есть несколько объектов Model3D, и мне нужно получить контекстное меню, только когда некоторые из них получают щелчок мыши)

спросил(а) 2021-01-19T17:21:38+03:00 9 месяцев назад
1
Решение
120

Итак, чтобы решить эту проблему, я добавил обработчик события ContextMenuOpening

<Viewport3D  
ContextMenuOpening="ContextMenuOpen"

И код, стоящий за

private void ContextMenuOpen(object sender, ContextMenuEventArgs e)
{
Point location = Mouse.GetPosition(myViewport);
HitTestResult hit = VisualTreeHelper.HitTest(myViewport, location);
var meshit = hit as RayMeshGeometry3DHitTestResult;
SurfaceInfo inf = model3D.FindInfo(meshit.ModelHit);
if (inf == null) // if Model3D object weren't touched
{
e.Handled = true;
}
}

ответил(а) 2021-01-19T17:21:38+03:00 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема