【问题标题】:How to increase the height or width(through scrolling) for InkCanvas when the user Ink near the end?当用户 Ink 接近尾声时,如何增加 InkCanvas 的高度或宽度(通过滚动)?
【发布时间】:2017-06-27 05:59:50
【问题描述】:

当用户 Ink 接近 InkCanvas 的末尾时,我想增加 InkCanvas 的高度或宽度(通过滚动)像 OneNote。

已尝试的解决方案:

  1. 我试过ScrollViewer 换成InkCanvas 但没用
  2. 我想重新设置它的样式,但在 generic.xaml 中找不到 InkCanvas

这是我的 InkCanvas 代码:

<ScrollViewer Grid.Row="1">
    <Grid>
        <InkCanvas Name="PATH_INK_CANVAS" Canvas.ZIndex="-1"/>
        <RichEditBox Name="PATH_RICH_EDIT_BOX" Canvas.ZIndex="0" PlaceholderText="Input Text" Style="{StaticResource RichEditBoxStyle}"/>
    </Grid>
</ScrollViewer>

【问题讨论】:

    标签: c# xaml uwp windows-10-universal inkcanvas


    【解决方案1】:

    我们应该在InkCanvas 中找到Ink 的边界,并将其与InkCanvas 的ActualSize 进行比较,然后根据需要增加InkCanvas。可以使用下面的代码来完成。

    public MainPage()
    {
        this.InitializeComponent();
        PATH_INK_CANVAS.InkPresenter.StrokeInput.StrokeEnded += StrokeInput_StrokeEndedAsync;
    }
    
    private async void StrokeInput_StrokeEndedAsync(InkStrokeInput sender, PointerEventArgs args)
    {
        await Task.Delay(100);
    
        var XBound = PATH_INK_CANVAS.InkPresenter.StrokeContainer.BoundingRect.Bottom;
        if (XBound > PATH_INK_CANVAS.ActualHeight - 400)
            PATH_INK_CANVAS.Height = XBound + 400;
    
        var YBound = PATH_INK_CANVAS.InkPresenter.StrokeContainer.BoundingRect.Right;
        if (YBound > PATH_INK_CANVAS.ActualWidth - 400)
            PATH_INK_CANVAS.Width = YBound + 400;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-18
      • 1970-01-01
      • 2014-01-30
      • 1970-01-01
      • 1970-01-01
      • 2011-05-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多