2012-06-11 77 views
0

我在Silverlight 3.0應用程序中有一個子窗口。在那個應用程序中,我有一個Slider。每當我滑動滑塊時,Slider_ValueChanged事件在一秒內發射超過30次。我想控制發射的事件數量?我使用滑塊是這樣的:Silverlight中控制滑塊值更改事件

<Slider Grid.Row="3" Height="17" HorizontalAlignment="Left" Margin="188,0,0,20" ValueChanged="sliderValueChanged" MouseLeftButtonUp="Slider_MouseLeftButtonUp" Name="Slider" VerticalAlignment="Top" Visibility="Collapsed" Width="456" Orientation="Horizontal" Background="Black" SmallChange="5" LargeChange="5" />

事件sliderValueChanged需要一點時間來執行。所以我只想減少對該事件的調用次數。

編輯:其實我的問題是在兒童窗口中我繪製多個波形forms.Without加載波形,滑塊工作正常(空屏幕)但是當我在屏幕上加載波形然後它不能正常工作(而不是顯示連續平滑的運動,它跳躍)。我沒有得到什麼問題實際上?以及如何克服它?

+0

你能展示你的渲染代碼嗎?你說渲染只需要1ms,但是與屏幕刷新率不同步(剪切等會發生)。最好以近似刷新率(30或60Hz)來調用它。 –

回答

1

獲取您的sliderValueChanged事件以保存當前(最新)滾動值並使用定時器定期檢查該數字的更改(例如每秒30幀或每秒60幀)。

Silverlight中的默認值是每秒60幀but can be altered。您的更新越接近刷新率,它的平滑度就會出現。

+0

:謝謝,但實際上我的sliderValueChanged函數花費的時間少於一毫秒執行。所以我不認爲這個解決方案適用於我。你可以給任何其他解決方案嗎? – Dany

+0

你想要什麼行爲?平穩更新?平滑滾動?您可以將任何時間間隔應用於上述解決方案(最低約55毫秒)。基本原則是忽略不必要的額外事件,但不會丟失最後一個:) –

+0

感謝您的回覆。我只是想平滑滾動滑塊。而在sliderValueChanged事件中,我只是將新值分配給其中一個變量。沒有任何其他操作。並且我正在Slider_MouseLeftButtonUp事件之後進行屏幕刷新,而不是sliderValueChanged事件。 – Dany