2011-08-03 23 views
3

我有一個ContentPresenter在2個狀態(「編輯器」和「查看器」)之間切換。這些狀態具有不同的高度和Content和ContentTemplate屬性的不同值。更改對Storyboard.Completed事件的反應。我們需要BeginInvoke嗎?

在一個狀態改變我通過播放故事板並在反應Storyboard.Completed事件調整控制更改內容/模板的屬性。

它的工作原理基本OK了,但我觀察到偶爾閃爍。在調試器中播放時,我觀察到在Completed處理程序中修改上述屬性可能會導致用戶觀察閃爍的奇怪的屏幕效果(部分屏幕爲空,額外的陰影,線條等)。

但是,每當我推遲使用Dispatcher.BeginInvoke()的ContentPresenter變化,問題似乎消失了。 (更多的測試需要。)

任何人有一個解釋?在網絡上,您會發現許多代碼示例在Storyboard.Completed處理程序中執行UI更改,因此我覺得有點奇怪。

+0

我與多個故事板的工作,並在某處應用程序被使用穿線,第二個故事板不會引發他的事件時承認。我現在正在與背景工作者合作,但這不是一個解決方案。但我可以調試它。在這裏找到一個WPF示例,我認爲它很好:http://stackoverflow.com/questions/80388/wpf-data-triggers-and-story-boards – goldengel

回答

0

我懷疑它可能是更由於時間不是需要是在UI線程上。嘗試在更改內容/模板屬性(而不是使用Dispatcher.BeginInvoke())之前先休眠一秒鐘左右。如果閃爍消失,那麼可能試圖在內容繁忙時更改這些屬性,而在故事板中調整大小是罪魁禍首 - 也許分配固定大小或以其他方式禁用故事板期間不斷調整大小會有所幫助。這只是一個猜測,但我必須看到一個示例才能真正理解它。如果你可以製作一個小樣本來重現它,我很樂意看看它。

+0

感謝您的建議。我在這個問題上工作了2天,並設法減少它,但不刪除它。請看http://stackoverflow.com/questions/6945235/bug-in-storyboard-animation我發佈了更多的細節。 –

相關問題