在使用MVVM模式时,我有一个自定义的 Canvas :

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

如何获取 View 模型以接收InkCanvas.StrokeCollected事件?

我无法将XAML绑定(bind)到笔划,因为自定义墨水 Canvas 将StrokeCollection.CollectionChanged事件调用三次。

任何帮助表示赞赏。

最佳答案

试试这个

    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

关于wpf - 如何在 View 模型中接收InkCanvas.StrokeCollected事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25356591/

10-13 03:14