我創建了一個矩形的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的大小而變化的,有時東西約3000像素寬度。
musicBG.Width = _songLength*PixelsPerSecond
然而,當滾動的ScrollViewer,它讓我滾動矩形屏幕一路掉。
例如,這行代碼給我下面的值時,我已經就我想移動它移動的矩形。
if (songScrollViewer.HorizontalOffset > songScrollViewer.ScrollableWidth)
HorizontalOffset的值爲〜1200,而ScrollableWidth的值約爲2900。
如何我能得到這個正確完成,使得矩形被關閉屏幕滾動完全?
我預計約1200 HorizontalOffset只能通過到它的目的地推大約一半的矩形,並不能使它啓動會關閉屏幕。
答:
太多的無奈之後,我能夠通過使用Canvas而不是邊界或矩形來解決這個問題。 我會獎勵分,如果任何人都可以解釋爲什麼這個問題會發生,如果有少處理器密集型的控制,將工作比帆布更好。
編輯:屏幕截圖:
糟糕的代碼:
良好的工作代碼:
<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>
好
<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>
壞滾動帶惡意代碼的圖片滾動:注意它說170 se conds在右下角,而不是在壞的滾動中118秒的較小數字。
如果你想拋出一個屏幕狂漲你描述以幫助觀察它,所以我可以肯定的你想怎麼完成那麼是的,你應該可以使用任何你是對象的什麼已經嘗試過,但你可能必須將大小綁定到ScrollViewer的ViewPort,甚至可能不需要偏移量。目前雖然很難從描述中形象化,但我相信我們可以將其整理出來。 –
@ChrisW。問題已更新。 – Bob
這是非常奇怪的,它完美的作品,直到矩形變大然後2000,然後它開始越走越推關閉屏幕時,您滾動到最後。你已經吸引了我的好奇心...... – methodMan