1

MVVMパターンを使用する際、次のカスタムinkcanvasがあります。

   protected override void OnStrokeCollected(InkCanvasStrokeCollectedEventArgs e)
    {
        CustomStroke newStroke = new CustomStroke(e.Stroke.StylusPoints, e.Stroke.DrawingAttributes);
        this.Strokes.Remove(e.Stroke);
        this.Strokes.Add(newStroke);
        InkCanvasStrokeCollectedEventArgs eNew = new InkCanvasStrokeCollectedEventArgs(newStroke);

        // Raises the System.Windows.Controls.InkCanvas.StrokeCollected event.
        base.OnStrokeCollected(eNew);
    }

ビュー モデルが InkCanvas.StrokeCollected イベントを受け取るようにするにはどうすればよいですか?

StrokeCollection.CollectionChanged イベントがカスタム インクキャンバスによって 3 回呼び出されるため、XAML をストロークにバインドできません。

どんな助けでも大歓迎です。

4

2 に答える 2

1

これを試して

    public Window3()
    {
        InitializeComponent();
        var vm=new ViewModel();
        this.DataContext = vm;
        canvas.StrokeCollected += vm.OnStrokeCollected;
    }

ビューモデル

public class ViewModel
{
    public void OnStrokeCollected(object sender, InkCanvasStrokeCollectedEventArgs e)
    { 

    }
}

編集

コードビハインドなしで実行したい場合は、EventTrigger の記事を参照してください

于 2014-08-18T05:15:35.083 に答える