如何通过在页面上显示半透明控件来禁用Windows Phone上的所有控件?

Thi*_*rry 0 c# mvvm expression-blend windows-phone-8

我希望在整个页面上显示某种半透明/半透明效果,然后在它上面显示我的选项按钮,但我无法弄清楚它是如何,它让我疯了!我已经在很多wp8应用程序中看到它,所以它是可行的,但我只是不知道如何!

一旦显示了这个半透明/半透明效果,我希望它在点击时消失,或者如果单击我的一个选项按钮,并按原样恢复屏幕或相应地执行操作.

我已经设法通过使用故事板设置背景颜色来做到这一点但奇怪的是,一旦显示并且我的选项按钮出现,它们看起来很好但是一旦故事板完成,按钮然后看起来也是禁用的,这看起来不对! !

提供"已禁用"效果的正确方法是什么,就像在窗口上显示半透明对话框一样.

任何想法,建议或代码将不胜感激.

谢谢.

lsu*_*rez 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>
Run Code Online (Sandbox Code Playgroud)

ContentRoot和ContentOverlay都将锚定在LayoutRoot网格的左上角并跨越行高.它们将按声明的顺序从最远到最近堆叠,因此ContentRoot将在ContentOverlay下呈现.只需根据用户输入操作ContentOverlay的可见性.

或者,您可以将ContentOverlay的不透明度设置为0以及折叠可见性(必需,以便它不截取下面的ContentRoot子控件的命中),并使用Blend中的故事板将其淡入淡出.这可能看起来像是一个稍微更清晰的过渡到用户,即使它只有0.3秒左右.