2013-08-16 34 views
0

我想在整個頁面上顯示某種半透明/半透明的效果,然後在其上顯示我的選項按鈕,但我無法弄清楚它是如何使它變得瘋狂!我已經在大量的wp8應用程序中看到它,所以它是可行的,但我只是不知道如何!如何通過在頁面上顯示半透明控件來禁用Windows Phone上的所有控件?

一旦顯示此半透明/半透明效果,如果點擊或我的某個選項按鈕被點擊,我希望它消失,並按原樣恢復屏幕或執行相應操作。

我已經設法使用故事板設置背景顏色,但奇怪的是,一旦顯示,我的選項按鈕出現,他們看起來很好,但一旦故事板完成,該按鈕,然後看起來禁用以及只是看起來錯了!

什麼是「禁用」效果的正確方法,就好像您在窗口上顯示了半透明對話框一樣。

任何想法,建議或代碼,將不勝感激。

謝謝。

+1

您的意思是將IsEnabled設置爲FALSE? –

+0

@FarhadJabiyev,我認爲OP想要創建一個覆蓋。您可以這樣做,方法是將您的「提示」面板放置(並最初隱藏)在「內容」面板旁邊。 「提示」面板應該有更高的zindex,可能是白色背景,不透明度爲0.7。然後,疊加層將有效地禁用它下面的控件的點擊事件,直到您將其解除爲止。 –

+0

如果我的按鈕位於疊加層中,由於不透明度,它們也會被禁用,所以如何在半透明提示面板中獲得不透明按鈕? – Thierry

回答

5

您可能會使它比它需要更復雜。請看下面的XAML例如:

<Grid x:Name="LayoutRoot"> 
    <Grid.RowDefinitions> 
    <RowDefinition Height="*" /> 
    </Grid.RowDefinitions> 

    <Grid x:Name="ContentRoot"> 
    ... 
    </Grid> 

    <Grid x:Name="ContentOverlay" Background="#AA000000" Visibility="Collapsed"> 
    ... 
    </Grid> 
</Grid> 

兩個ContentRoot和ContentOverlay將停泊在LayoutRoot網格的左上角和跨越行高。它們將按照聲明的順序從最遠到最近堆棧,因此ContentRoot將在ContentOverlay下呈現。根據用戶輸入簡單操作ContentOverlay的可見性。

或者,您可以將ContentOverlay的Opacity設置爲0以及摺疊的可見性(要求,因此它不會攔截到下面的ContentRoot子控件的點擊),並使用Blend中的故事板淡入淡出。這可能看起來像一個稍微乾淨的過渡到用戶,即使它只有0.3秒左右。

+0

@NewDev,lthibodeaux我做了你們都建議的事情,但我必須移動包含我的「選項按鈕」的覆蓋網格,但他們也看起來被禁用。我怎樣才能解決這個問題?這幾乎是我所擁有的,正如我最初在使用故事板時提到的那樣,這些按鈕顯示爲可用,直到它完成,然後以某種方式將它們調暗到與覆蓋面板相同的水平。還有其他建議嗎? – Thierry

+0

覆蓋層的不透明度應爲100%,因此請檢查最終的關鍵幀,以確保動畫完成後不會將其設置爲任何較低的值。你只應該「暗淡」背景顏色屬性。注意在上面的例子中背景具有約65%的不透明度給定其alpha值。 – lsuarez

+0

可能是我缺少的東西,但不會將不透明度設置爲100%,使其完全不透明,因此我的控件後面都不會顯示?你能排除這個故事情節,並且不在過程中包含動畫,只是爲了簡化現在的事情嗎?如果有幫助,我正試圖獲得與Weave應用類似的效果?我已經將動畫分類了,但我正在爲此付出努力。也許你可以看看它,因爲它可能有助於更好地理解我想要實現的目標。上一篇文章後,從右向左輕彈,您會看到按鈕出現。 – Thierry

0

使用Blend指定VisualStates(View | States。Then'states'選項卡)。您可以在使用VisualStateManager.GoToState的代碼之間切換狀態。一個狀態是正常的,其他所有控制都是禁用的。 邁克

相關問題