我已经在ScrollViewer中创建了一个矩形,如下所示:
在使用应用程序时,MusicBg 的大小会发生变化,有时会变成大约 3,000 像素宽度。
然而,当滚动 scrollViewer 时,它允许我将矩形完全滚出屏幕。 例如,当我已经移动矩形到想要的位置时,这行代码会给我以下值。
我已经在ScrollViewer中创建了一个矩形,如下所示:
<ScrollViewer ManipulationMode="Control" x:Name="songScrollViewer" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Disabled" Height="270" VerticalAlignment="Center" Width="728" Canvas.Top="20" d:LayoutOverrides="HorizontalMargin" >
<Rectangle x:Name="musicBG" Fill="#FF0692FD"/>
</ScrollViewer>
在使用应用程序时,MusicBg 的大小会发生变化,有时会变成大约 3,000 像素宽度。
musicBG.Width = _songLength*PixelsPerSecond
然而,当滚动 scrollViewer 时,它允许我将矩形完全滚出屏幕。 例如,当我已经移动矩形到想要的位置时,这行代码会给我以下值。
if (songScrollViewer.HorizontalOffset > songScrollViewer.ScrollableWidth)
HorizontalOffset的值约为1200,ScrollableWidth的值约为2900。
如何使矩形不完全滚动到屏幕外?
我希望水平偏移量约为1200只能将矩形推到目标的一半,而不是让它开始离开屏幕。
答案:
经过很多挫折后,我使用Canvas代替Border或Rectangle解决了这个问题。 如果有人能解释为什么会出现这个问题,并且是否有比Canvas更好的控件可以使用,我会给予奖励分数。
编辑:屏幕截图:
错误代码:
<ScrollViewer ManipulationMode="Control" x:Name="songScrollViewer" Width="720" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Disabled" Height="270" VerticalAlignment="Top" Canvas.Top="20" HorizontalAlignment="Left" >
<Border x:Name="musicBG" Background="#FF0692FD" VerticalAlignment="Top" HorizontalAlignment="Left" Height="270" />
</ScrollViewer>
糟糕代码的滚动图像:
良好的工作代码:
<ScrollViewer ManipulationMode="Control" x:Name="songScrollViewer" Width="720" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Disabled" Height="270" VerticalAlignment="Top" Canvas.Top="20" HorizontalAlignment="Left" >
<Canvas x:Name="musicBG" Background ="#FF0692FD" Height="270" >
<Border Background="#FF0692FD" VerticalAlignment="Top" HorizontalAlignment="Left" Height="270" />
</Canvas>
</ScrollViewer>
良好的滚动:请注意,底部右侧显示的是170秒,而不是较小的118秒(坏滚动)。