如何将全局 InkToolbar 用于多个 InkCanvas 控件?

How to use a global InkToolbar for multiple InkCanvas controls?

所以我有一个 ListView 由多个 InkCanvas 控件组成(基本上是文档的页面)。现在我想对我的所有页面(InkCanvas 控件)使用全局 InkToolbar。但是,InkToolbar 只允许绑定到单个 TargetInkCanvas 对象,我不确定如何解决这个问题并设计我的页面,以便它们都共享相同的 InkToolbar。

How to use a global InkToolbar for multiple InkCanvas controls?

InkToolbar 仅允许使用 x:bind 方案绑定到 xaml 代码中的单个 TargetInkCanvas。如果您确实想要全局 InkToolbar,请在使用特定 InkCanvas.

时尝试在后面的代码中设置 TargetInkCanvas
private void Button_Click(object sender, RoutedEventArgs e)
{
    inkToolbar.TargetInkCanvas = MyInkCanvas;
}

好的,所以我找到了解决方法。该解决方案相当不优雅,但确实有效。可以在处理之前在 InkCanvas 中处理指针输入。这可以做到 使用 CoreInkIndependentInputSource class 如下:

CoreInkIndependentInputSource core = CoreInkIndependentInputSource.Create(inkCanvas.InkPresenter);
core.PointerEntering += PointerEntering;

然后在我的 PointerEntering 事件处理程序中,我可以更改传播当前 canvas 应该绑定到 InkToolbar 的信号(在我的例子中我不得不使用 VisualTreeHelper 将信息传播到父 ListView)。