在ScrollViewer内嵌入多个InkCanvas,InkCanvas的高度比较高,一个窗口内显示不完,当在两个InkCanvas同时显示时,即屏幕上半部是第一个InkCanvas,下半部是第二个InkCanvas,这个时候如果点击第一个InkCanvas,则会自动向下滚动,这时第一个InkCanvas的底部处于屏幕底部。
如果点击第二个InkCanvas,则会自动向上滚动,这是第二个InkCanvas的顶部处于屏幕的顶部。
这个自动滚动产生的问题是,鼠标只点击了一下,画出来却是很长一条线。怎么解决呢。
方便给出这部分代码么?
这是主窗口当中的xaml
<ScrollViewer Name="srcolMain" ScrollBar.Scroll="srcolMain_Scroll" ScrollChanged="srcolMain_ScrollChanged" Grid.Row="1" Grid.Column="0" IsManipulationEnabled="True" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Hidden" PanningMode="VerticalOnly" ManipulationBoundaryFeedback="ScrollViewer_ManipulationBoundaryFeedback">
<Grid Name="gridList" Background="White">
<Grid.RowDefinitions>
<RowDefinition Height="2370"></RowDefinition>
</Grid.RowDefinitions>
</Grid>
</ScrollViewer>
然后通过代码在gridList当中插入多个用户控件,每个控件的高度和上面定义的2370相同。
下面是用户控件的xaml,其中myImg是背景图片,这个控件的主要功能就是在背景图片涂鸦
<Grid Name="mainGrid">
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition Height="20"></RowDefinition>
</Grid.RowDefinitions>
<Image Grid.Row="0" Name="myImg" Stretch="Uniform" StretchDirection="Both">
</Image>
<InkCanvas Grid.Row="0" UseCustomCursor="True" Background="Transparent" x:Name="myCanvas" IsManipulationEnabled="True" >
</InkCanvas>
<DockPanel Grid.Row="1" Background="Gray"></DockPanel>
</Grid>
控件的后台代码比较简单就是设置背景图片
myImg.Source= new BitmapImage(new Uri(imgUrl));
这是其它一些相关的问题,能帮忙一起解决一下吗,
https://q.cnblogs.com/q/112576/,
我还在猪八戒网上发布了相同的需求
https://task.zbj.com/188034888234999808
@duxer: 猪八戒看不了,需求比较多,可以加微信详聊。初步觉得应该使用自定义模板来实现。
微信号:Leolion610
我也遇到相同的问题,你解决了吗