4

ユーザーがInkCanvasスタイラス、タッチ、またはマウスで描画できるウィンドウがあります。また、ユーザーがテキストを追加できるようにします。ユーザーは「テキストを追加」ボタンをタップしてから、キャンバス上のテキストを挿入したい場所をタップします。そこにテキストボックスが表示され、入力できるようになります。フォーカスを入力または失ったときに、 を作成してContentControlに追加しmyInkCanvas.Childrenます。

が消去モードのときに、ユーザーが作成したテキストを消去できるようにしたいと思いInkCanvasます (私は を使用していますEraseByPoint)。コンテンツ コントロールのイベントMouseEnterとイベントをキャプチャしようとしましたが、どちらも起動していないようです。PreviewMouseMove

キャプチャできるイベントはありますか?このシナリオを処理するより良い方法はありますか? それは可能ですか?

4

1 に答える 1

4

この目的のためにヒットテストを使用できますここ
を見てください

最初に InkPresenter を入手する

public T GetVisualChild<T>(Visual parent) where T : Visual
{
    T child = default(T);
    int numVisuals = VisualTreeHelper.GetChildrenCount(parent);
    for (int i = 0; i < numVisuals; i++)
    {
        Visual v = (Visual)VisualTreeHelper.GetChild(parent, i);
        child = v as T;
        if (child == null)
        {
            child = GetVisualChild<T>(v);
        }
        if (child != null)
            break;
    }
    return child;
}

InkPresenter inkPresenter = GetVisualChild<InkPresenter>(myInkCanvas);

次に、ポイントの HitTestResult を取得します

HitTestResult hitTestResult = VisualTreeHelper.HitTest(inkPresenter, new Point(x, y));

hitTestResult.VisualHit次に、このオブジェクトを削除するために使用できます

于 2011-06-17T01:08:45.500 に答える