У меня есть приложение Windows Forms, в котором есть один пользовательский элемент управления WPF, доступный через элемент управления ElementHost.
Пользовательский элемент управления WPF имеет код, предназначенный для реагирования на события колесика мыши. Однако ни один из написанного кода, связанного с этими событиями, не запускается в wpf, когда я запускаю приложение и использую колесико мыши. Я проверил это, разместив точки останова в коде Visual Basic. Несмотря на это, он реагирует на другие события мыши (например, щелчок или перетаскивание, которые я использую для вращения моей 3D-модели).
Мне было интересно, что, возможно, события колесика мыши не передаются из Windows Forms в пользовательский элемент управления WPF, потому что окна не поддерживают (или ограничивают) колесико мыши.
Напротив, я попытался написать простую программу пользовательского элемента управления WPF внутри приложения WPF, и этот элемент управления реагирует на события колеса мыши.
В пользовательском элементе управления WPF есть viewport3D, который я использую для трехмерного рисования, чего нельзя сделать в Windows Forms.
Есть ли способ решения этой проблемы? Я надеюсь, что вы можете помочь. Спасибо.
Вот пример того, как я настраиваю событие Mousewheel в элементе управления WPF. Я пробовал использовать UserControl, Grid и Canvas, но ни в одном из них не было событий колеса мыши.
<UserControl x:Class="LPViewport3D"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300" Background="white" MouseMove="UserControl_MouseMove" MouseDown="UserControl_MouseDown" MouseWheel="UserControl_MouseWheel">
<Grid MouseWheel="Grid_MouseWheel" Background="white">
<Viewport3D x:Name="VP" Margin="0" ClipToBounds="False" Grid.Row="0" Grid.Column="0" >
<!-- more code -->
</Viewport3D>
<!-- Ovelay canvas to receive mouse events-->
<Canvas Grid.Row="0" Grid.Column="0"
Background="Transparent"
MouseDown="Canvas_MouseDown"
MouseMove="Canvas_MouseMove" MouseWheel="Canvas_MouseWheel" />
</Grid>