Поведение мыши в WPF не срабатывает - PullRequest
0 голосов
/ 02 марта 2019

Я изучаю Microsoft.Expression.Interactions.WPF.Я пытаюсь прикрепить поведение к событию MouseDown сетки.Метод OnAttached вызывается, но мое поведение никогда не получает событие MouseDown.

XAML

<Window x:Class="SequenceDiagramViewer.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:SequenceDiagramViewer"
        xmlns:ineractivity="http://schemas.microsoft.com/expression/2010/interactivity"
        mc:Ignorable="d"
        Title="Sequence Diagram Viewer" Height="450" Width="800">
    <Window.DataContext>
        <local:MainViewModel />
    </Window.DataContext>
    <Grid>
        <ineractivity:Interaction.Behaviors>
            <local:MouseClick />
        </ineractivity:Interaction.Behaviors>
    </Grid>
</Window>

C #

using System;
using System.Windows;
using System.Windows.Input;
using System.Windows.Interactivity;
using System.Windows.Media;

namespace SequenceDiagramViewer
{
  public class MouseClick : Behavior<FrameworkElement>
  {
    protected override void OnAttached()
    {
      Console.WriteLine("OnAttached called");
      AssociatedObject.MouseDown += AssociatedObject_MouseDown;
    }

    private void AssociatedObject_MouseDown(object sender, MouseButtonEventArgs e)
    {
      Console.WriteLine("MouseDown called");
    }

    protected override void OnDetaching()
    {
      Console.WriteLine("OnDetaching called");
      AssociatedObject.MouseDown -= AssociatedObject_MouseDown;
    }
  }
}

В выводе моей консоли:Я только получаю OnAttached called.Кроме того, когда я ставлю точку останова в AssociatedObject_MouseDown, она никогда не получает удар, но OnAttached делает.Как мне получить событие, чтобы перейти к моему поведению?

1 Ответ

0 голосов
/ 02 марта 2019

Мой фон сетки был прозрачным.Как только я изменил свой XAML-сетку на это:

<Grid Background="White">
    <interactions:Interaction.Behaviors>
        <local:MouseClick />
    </interactions:Interaction.Behaviors>
</Grid>

, я начал получать события нажатия мыши.

...