Inkcanvas StrokeErasing событие - PullRequest
       8

Inkcanvas StrokeErasing событие

0 голосов
/ 19 апреля 2011

Я использую Inkcanvas в моем решении. Поэтому я хочу удалить после подтверждения пользователя, как это ...

XAML:

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

C #:

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

После этого я могу увидеть окно сообщения дважды :( Это чудо, как это случилось. Пожалуйста, дайте мне знать об этом.

Ответы [ 2 ]

1 голос
/ 19 апреля 2011

Я попытался воспроизвести эту ошибку и использовал ink.EditingMode = InkCanvasEditingMode.EraseByStroke;

Это только вызывает окно сообщения один раз.

Когда я использую ink.EditingMode = InkCanvasEditingMode.Select; и нажимаю удалить после выбораВ штрихе окно сообщения не отображается.

Затем я использовал ink.EditingMode = InkCanvasEditingMode.EraseByPoint;, и это вызвало многократное появление окна сообщения, потому что оно вызывается для каждой отдельной точки удаляемого удара.

0 голосов
/ 20 апреля 2011

Спасибо, эмо.На самом деле я использовал "InkCanvasEditingMode.EraseByStroke", и я должен использовать это значение.:( В любом случае, я думаю, проблема в фокусе мыши. Я изменил свой код следующим образом ...

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;
    }
}

Он работает нормально :) Я подозреваю, что это ошибка.

...