1

ユーザーがカスタムグリッドの外側をクリックしたことを検出したいのですが、ユーザーがグリッドをクリックすると、常にLostFocusイベントを受け取ります。フォーカス可能は本当ですが、グリッドがフォーカスを取得することはないようです。誰か助けてくれませんか?

public class GridEditor : Grid
{
    public GridEditor()
    {
        Loaded += GridEditor_Loaded;
    }

    private void GridEditor_Loaded(object sender, RoutedEventArgs e)
    {
        Focusable = true;

        this.LostFocus += new RoutedEventHandler(GridEditor_LostFocus);
    }

    void GridEditor_LostFocus(object sender, RoutedEventArgs e)
    {
        if (!this.IsKeyboardFocusWithin && !this.IsMouseOver)
        {
            Commands.EditConfirmed.Execute(DataContext, this);
        }
    }
4

1 に答える 1

4

メソッドを使用しMouse.Capture(...)て、グリッドを参照していないマウスのイベントを取得できます。これは、線などを描く場合に非常に役立ちます。これを見てください:msdnのMouse.Capture

于 2012-08-27T09:27:45.383 に答える