在使用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/