【问题标题】:How to use a global InkToolbar for multiple InkCanvas controls?如何为多个 InkCanvas 控件使用全局 InkToolbar?
【发布时间】:2020-05-12 05:28:24
【问题描述】:

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

【问题讨论】:

    标签: xaml uwp windows-10-universal


    【解决方案1】:

    如何为多个 InkCanvas 控件使用全局 InkToolbar?

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

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        inkToolbar.TargetInkCanvas = MyInkCanvas;
    }
    

    【讨论】:

    • 是的,这是我想到的。 InkCanvas 是否有某种“笔悬停”事件?
    • InkCanvas 将处理基本输入事件,因此我们无法监听指针进入或点移动事件。
    • 但是我怎么知道工具栏需要绑定到哪个 InkCanvas。例如,我有两个 InkCanvas 控件,然后我想对它们都使用相同的 InkToolbar,现在我希望当用户使用第一个 InkToolbar 时,InkToolbar 绑定到那个,当用户使用另一个时它绑定到那个.
    • 请在inkCanvas顶部添加按钮,并在按钮点击方法中手动设置TargetInkCanvas
    • 谢谢,但我认为您不理解我的问题。我不能使用按钮在画布之间切换,这显然是一件微不足道的事情。我需要它自动发生。假设您在一个 word 文档中,为了在不同的页面上书写,您真的希望用户在切换到不同的页面之前单击一个按钮吗?不,显然这将是糟糕的用户体验。
    【解决方案2】:

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

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

    然后在我的PointerEntering 事件处理程序中,我可以更改传播当前画布应绑定到InkToolbar 的信号(在我的情况下,我必须使用VisualTreeHelper 将信息传播到父ListView) .

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多