2011-05-20 58 views
2

我定義爲這樣一個路徑:淡入淡出Silverlight中的路徑?

<Viewbox Visibility="Collapsed" x:Name="Tick" Grid.Column="1" Grid.Row="1"> 
    <Canvas MaxWidth="100" MaxHeight="100" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
             Width="100" Height="100" Canvas.Left="0" Canvas.Top="0"> 
     <Path ...Fill="#FF00B800" x:Name="MyPath" (path dimensions, lines, etc) .../> 
    </Canvas> 
</Viewbox> 

現在我想要做的是什麼操縱填補這樣就會造成道路有淡入/淡出效果。基本上,填充alpha組件或者根據路徑在裏面的viewbox是否可見,轉向不透明或透明。因此,當可見路徑淡入時,摺疊時路徑淡出。

回答

1

你試圖達到的效果是一個優雅的效果,但目前的計劃存在一個嚴重的問題。當在這種情況下更高級元素,Viewbox被設置爲Visibility.Collapsed時,元素和所有子元素立即不再可見。在這一點上,您想要開始淡出Path

因此,Path已不可見,並開始動畫逐漸減少其不透明度將不會有任何好處,因爲它已經消失。換句話說,當可見性設置爲Visiblity.Collapsed時,對元素內部的事物做任何有用的事情都爲時已晚,因爲用戶不會看到它們。如果可以的話,你會想要看到未來,並知道你要改變能見度並開始動畫,以便它在元素「關閉窗簾」之前完成。

同樣的問題不適用於當我們使元素可見時,因爲一切都是完美的:我們變得可見並開始淡入動畫。但是,由於一半的影響不起作用,我們仍然有一個很大的問題。

此問題的解決方案是將向上移動一個級別,並查看我們正在嘗試執行的操作。在XAML中,我們只有無源元件,Viewbox,CanvasPath。但也許這些行爲更像控件或協助控件,例如檢查CheckBox或類似複選框的控件。

的控制也有狀態:

  • 正常,鼠標懸停
  • 的追問下,殘疾人
  • 沒有重點,着力

和這些國家可以有過渡效果,得益於VisualStateManager

所以如果淡入和淡出效果是控制行爲的一部分,那麼我們有一個完整的複雜強大的工具集可用於解決我們的問題。我不知道你的情況是否屬於這種情況。

即使不是這種情況,在Silverlight上過渡效果的一種非常實用的方法是將您的元素轉換爲不可見的控件,僅用於利用VisualStateManager,因爲它使事情變得如此簡單。也許這種選擇可以在你的情況下工作。