我今天看到了微软的白板,我喜欢它的基本 inkCanvas(这是我的猜测)控制。我决定使用 inkCanvas 在 UWP 应用程序中创建一个控件,该控件的行为类似于 Microsoft 的白板 UWP 应用程序。Microsoft UWP 白板 - 我的目标如下
- 如果inkCanvas 有任何形状靠近右侧绘制,它应该在右侧添加宽度和滚动。我尝试了下面的代码,它确实有效,但没有滚动微软白板的工作方式。
var right = inkCanvas.InkPresenter.StrokeContainer.BoundingRect.Right; if (right > inkCanvas.ActualWidth - 400) { inkCanvas.Width = right + 400; }
- 类似于 inkCanvas 的底部以增加高度。
var bottom = inkCanvas.InkPresenter.StrokeContainer.BoundingRect.Bottom; if (bottom > inkCanvas.ActualHeight - 400) { grdCan.Height = bottom + 400; }
问题是一样的,它没有自动滚动。
另外,为了在左侧添加空间,我使用了运行正常的 inkCanvas 的 flowcontrol 属性,但是对于在“顶部”位置添加空间,我没有解决方案。
任何帮助或指导将是非常可观的。
谢谢
更新:代码
<Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <InkToolbar Grid.Row="0" Margin="10" x:Name="inkToolbar" VerticalAlignment="Top" TargetInkCanvas="{x:Bind inkCanvas}"> </InkToolbar> <ScrollViewer Grid.Row="1" x:Name="scrollViewer" ZoomMode="Enabled" MinZoomFactor="1" MaxZoomFactor="20" VerticalScrollMode="Enabled" VerticalScrollBarVisibility="Auto" HorizontalScrollMode="Enabled" HorizontalScrollBarVisibility="Auto"> <Grid Height="{Binding ElementName=scrollViewer, Path=ViewportHeight}" Width="{Binding ElementName=scrollViewer, Path=ViewportWidth}"> <Canvas x:Name="recognitionCanvas"/> <InkCanvas x:Name="inkCanvas"/> </Grid> </ScrollViewer> </Grid>