【问题标题】: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。
已尝试的解决方案:
- 我试过
ScrollViewer 换成InkCanvas 但没用
- 我想重新设置它的样式,但在 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;
}