如何调暗整个屏幕并在中心放置一个按钮

时间:2013-10-09 22:16:55

标签: xaml windows-phone-8

我正在尝试在Windows Phone 8中创建试用版应用程序,并且我希望允许用户选择是否在按钮单击事件上购买应用程序。我的想法是,经过这么多次发布后,MainPage会在其上面进行某种调暗或覆盖,这样用户就不会与应用程序进行交互,并且消息和按钮会显示在顶部,最终会询问用户是否需要是否购买应用程序。可以这样做吗?我不确定是否真的创建一个全新的页面会更好,但我的想法是,如果用户可以看到灰色叠加层背后的功能,他们将更有吸引力继续购买以回到这些功能。我怎么能这样做?

修改

也许适应像http://developer.nokia.com/Community/Wiki/Create_simple_overlay_with_UserControl_in_Windows_Phone这样的东西?

1 个答案:

答案 0 :(得分:0)

这应该相当简单 - 首先添加一个像边框这样的叠加层和默认隐藏的“购买”按钮。只需确保叠加层是根的最后一个子节点,以便它始终显示在顶部:

<Grid x:Name="LayoutRoot">

    <!-- Main content here -->

    <Border x:Name="overlay" RowSpan="10" ColumnSpan="10" 
        Opacity="0.5" Background="#666"
        Visibility="Collapsed" />
    <Button x:Name="btnPurchase" 
        Content="Purchase"
        HorizontalAlignment="Center" VerticalAlignment="Center"
        Command="{Binding StartPurchaseCommand}"
        Visibility="Collapsed"  />
</Grid>

现在添加“购买”视觉状态以显示叠加+按钮:

<Grid x:Name="LayoutRoot">

    <VisualStateManager.VisualStateGroups>
        <VisualStateGroup x:Name="PurchaseStates">
            <VisualState x:Name="TrialState" />
            <VisualState x:Name="PurchaseRequired">
                <Storyboard>
                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="overlay" Storyboard.TargetProperty="Visibility">
                        <DiscreteObjectKeyFrame> 
                            <DiscreteObjectKeyFrame.Value>
                                <Visibility>Visible</Visibility>
                            </DiscreteObjectKeyFrame.Value>
                        </DiscreteObjectKeyFrame>
                    <ObjectAnimationUsingKeyFrames>
                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="btnPurchase" Storyboard.TargetProperty="Visibility">
                        <DiscreteObjectKeyFrame> 
                            <DiscreteObjectKeyFrame.Value>
                                <Visibility>Visible</Visibility>
                            </DiscreteObjectKeyFrame.Value>
                        </DiscreteObjectKeyFrame>
                    <ObjectAnimationUsingKeyFrames>
                </Storyboard>
            </VisualState>
        </VisualStateGroup>
    </VisualStateManager.VisualStateGroups>

然后,只要在试用期过后,就可以在启动时调用VisualStateManager.GoToState(this, "PurchaseRequired", true)