События WPF PreviewMouse не работают - PullRequest
0 голосов
/ 05 июня 2018

Получение странного поведения при присоединении к процессу с помощью приведенного ниже кода.Каждая кнопка имеет Mouseup и Mousedown.При обычном запуске работает только MouseDown, а MouseUp get пропускается.Если я поставлю точку останова в MouseUp, она все равно будет пропущена.Установите точку останова в MouseDown, тогда оба события сработают.Любые идеи или разные способы?

private void Window_Load(object sender, RoutedEventArgs e)
{
    TelescopeHardware.Start();
    TelescopeHardware.StaticPropertyChanged += PropertyChanged;

    ButtonLeft.PreviewMouseLeftButtonUp += (s, ev) => { SetPulseGuideParms(0.0, -GuideRate); };
    ButtonLeft.PreviewMouseLeftButtonDown += (s, ev) => { StartSlew(SlewDirection.SlewLeft); };

    ButtonRight.PreviewMouseLeftButtonUp += (s, ev) => { SetPulseGuideParms(0.0, GuideRate); };
    ButtonRight.PreviewMouseLeftButtonDown += (s, ev) => { StartSlew(SlewDirection.SlewRight); };

    ButtonUp.PreviewMouseLeftButtonUp += (s, ev) => { SetPulseGuideParms(GuideRate, 0.0); };
    ButtonUp.PreviewMouseLeftButtonDown += (s, ev) => { StartSlew(SlewDirection.SlewUp); };

    ButtonDown.PreviewMouseLeftButtonUp += (s, ev) => { SetPulseGuideParms(-GuideRate, 0.0); };
    ButtonDown.PreviewMouseLeftButtonDown += (s, ev) => { StartSlew(SlewDirection.SlewDown); };

    ButtonStop.PreviewMouseLeftButtonDown += (s, ev) => { TelescopeHardware.AbortSlew(); };

    SlewSpeed_Load();
    Version_Load();
    EquatorialSystem_Load();
    GetTrackingRates();
}

Вот Xaml для одной кнопки ...

<Button Grid.Column="0" Grid.Row="1" Margin="2,2,2,2">
    <Rectangle x:Name="ButtonLeft" Fill="{StaticResource Arrow-Left-Bold-Circle}" Height="32" Width="32" />
</Button>

1 Ответ

0 голосов
/ 05 июня 2018

Ваш код будет работать ожидаемым образом, если вы замените Button другим элементом, который не обрабатывает щелчки мыши, например Border:

<Border Grid.Column="0" Grid.Row="1" Margin="2,2,2,2" BorderThickness="1">
    <Rectangle x:Name="ButtonLeft" Fill="{StaticResource Arrow-Left-Bold-Circle}" Height="32" Width="32" />
    <Border.Style>
        <Style TargetType="Border">
            <Setter Property="Background" Value="#FFDDDDDD"/>
            <Setter Property="BorderBrush" Value="#FF707070"/>
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="true">
                    <Setter Property="Background" Value="#FFBEE6FD"/>
                    <Setter Property="BorderBrush" Value="#FF3C7FB1"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Border.Style>
</Border>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...