开发者

Inkcanvas StrokeErasing event

I'm using an Inkcanvas at my solution. So I want to delete after user confirm, like this...

XAML:

<InkCanvas Grid.RowSpan="3" Name="ink"  StrokeErasing="ink_StrokeErasing" />

C#:

private void ink_StrokeErasing(object sender, InkCanvasStrokeErasingEventArgs e)
{
    if (MessageBox.Show("Delete this st开发者_StackOverflow社区roke?", "", MessageBoxButton.OKCancel) != MessageBoxResult.OK)
    {
        e.Cancel = true;
    }
}

After that, I can see the messagebox twice, :( This Wonder how that happened. Please let me konw about this.


I tried to reproduce this error and used ink.EditingMode = InkCanvasEditingMode.EraseByStroke;

This only triggers the message box once.

When I use ink.EditingMode = InkCanvasEditingMode.Select; and press delete after selecting a stroke, the messagebox is not shown.

Then I used ink.EditingMode = InkCanvasEditingMode.EraseByPoint; and that caused the message box to appear multiple times because it is triggered for every single point of the stroke you are deleting.


Thanks emo. Actually I used "InkCanvasEditingMode.EraseByStroke" and I have to use this value. :( Anyway I guess the problem is mouse focus. I changed my code like this...

private void ink_StrokeErasing(object sender, InkCanvasStrokeErasingEventArgs e)
{
    if (Mouse.LeftButton == MouseButtonState.Released) { e.Cancel = true; return; }

    if (MessageBox.Show("Delete this stroke?", "", MessageBoxButton.OKCancel) != MessageBoxResult.OK)
    {
        e.Cancel = true;
    }
}

It works fine :) I suspect that this is a bug.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜