天天看點

silverlight 樂動魔方 實戰四

回到MainPage了, 開始想那個點選 PlayGame 按鈕 ,跳轉到另外一個頁面。咋辦?

哈,網上大牛确實多,翻開部落格園,找到 ‘路過秋天’有個比較良好的解決方案。

1、首先,點選APP.xaml的背景.cs 檢視。

要建立個全局容器,來進行頁面轉換。以下是APP.cs的源碼,有注釋的部份,都是要修改或者增加的,自己看着辦吧···哈

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace SilverlightMusicHit
{
    public partial class App : Application
    {
        /// <summary>
        /// 全局變量
        /// </summary>
        Grid root = new Grid();

        public App()
        {
            this.Startup += this.Application_Startup;
            this.Exit += this.Application_Exit;
            this.UnhandledException += this.Application_UnhandledException;

            InitializeComponent();
        }

        /// <summary>
        /// 自定義轉向
        /// </summary>
        /// <param name="ct"></param>
        public void RedirectTo(Control ct)
        {
            root.Children.Clear();
            root.Children.Add(ct);
        }

        private void Application_Startup(object sender, StartupEventArgs e)
        {
            //this.RootVisual = new MainPage();
            this.RootVisual = root;
            root.Children.Add(new MainPage());
        }

        private void Application_Exit(object sender, EventArgs e)
        {

        }

        private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
        {
            // 如果應用程式是在調試器外運作的,則使用浏覽器的
            // 異常機制報告該異常。在 IE 上,将在狀态欄中用一個 
            // 黃色警報圖示來顯示該異常,而 Firefox 則會顯示一個腳本錯誤。
            if (!System.Diagnostics.Debugger.IsAttached)
            {

                // 注意: 這使應用程式可以在已引發異常但尚未處理該異常的情況下
                // 繼續運作。 
                // 對于生産應用程式,此錯誤處理應替換為向網站報告錯誤
                // 并停止應用程式。
                e.Handled = true;
                Deployment.Current.Dispatcher.BeginInvoke(delegate { ReportErrorToDOM(e); });
            }
        }

        private void ReportErrorToDOM(ApplicationUnhandledExceptionEventArgs e)
        {
            //try
            //{
            //    string errorMsg = e.ExceptionObject.Message + e.ExceptionObject.StackTrace;
            //    errorMsg = errorMsg.Replace('"', '\'').Replace("\r\n", @"\n");

            //    System.Windows.Browser.HtmlPage.Window.Eval("throw new Error(\"Unhandled Error in Silverlight Application " + errorMsg + "\");");
            //}
            //catch (Exception)
            //{
            //}

            try
            {
                string errorMsg = e.ExceptionObject.Message + e.ExceptionObject.StackTrace;
                errorMsg = errorMsg.Replace('"', '\'').Replace("\r\n", @"\n");

                System.Windows.Browser.HtmlPage.Window.Alert("Error: " + errorMsg);
            }
            catch (Exception)
            {
            }
        }
    }
}
           

好了,再回到MainPage

2、輕按兩下PlayGame按鈕觸發Click事件,打算跳轉代碼

private void btnStart_Click(object sender, RoutedEventArgs e)
        {
            ((App)(Application.Current)).RedirectTo(new Music());
        }
           

再次檢查一下MainPage.xaml

<UserControl x:Class="SilverlightMusicHit.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="600" d:DesignWidth="800">
    <UserControl.Resources>
        <Style x:Key="ButtonStyle1" TargetType="Button">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <Grid>
                            <VisualStateManager.VisualStateGroups>
                                <VisualStateGroup x:Name="CommonStates">
                                    <VisualState x:Name="Normal">
                                        <Storyboard>
                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="contentPresenter">
                                                <EasingDoubleKeyFrame KeyTime="0" Value="1"/>
                                                <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0.75"/>
                                                <EasingDoubleKeyFrame KeyTime="0:0:1" Value="0.5"/>
                                                <EasingDoubleKeyFrame KeyTime="0:0:1.5" Value="0.25"/>
                                                <EasingDoubleKeyFrame KeyTime="0:0:2" Value="0"/>
                                                <EasingDoubleKeyFrame KeyTime="0:0:2.5" Value="0.25"/>
                                                <EasingDoubleKeyFrame KeyTime="0:0:3" Value="0.5"/>
                                                <EasingDoubleKeyFrame KeyTime="0:0:3.5" Value="0.75"/>
                                                <EasingDoubleKeyFrame KeyTime="0:0:4" Value="1"/>
                                            </DoubleAnimationUsingKeyFrames>
                                        </Storyboard>
                                    </VisualState>
                                    <VisualState x:Name="MouseOver"/>
                                    <VisualState x:Name="Pressed"/>
                                    <VisualState x:Name="Disabled"/>
                                </VisualStateGroup>
                            </VisualStateManager.VisualStateGroups>
                            <ContentPresenter x:Name="contentPresenter" OpacityMask="Black"/>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
            <Setter Property="FontFamily" Value="Arial Black"/>
            <Setter Property="FontSize" Value="48"/>
            <Setter Property="Foreground">
                <Setter.Value>
                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                        <GradientStop Color="Black" Offset="0"/>
                        <GradientStop Color="White" Offset="1"/>
                        <GradientStop Color="#FF1D1D1D" Offset="0.116"/>
                        <GradientStop Color="#FF303030" Offset="0.191"/>
                    </LinearGradientBrush>
                </Setter.Value>
            </Setter>
        </Style>
    </UserControl.Resources>
    <Grid x:Name="LayoutRoot">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="300"/>
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="35*" />
        </Grid.ColumnDefinitions>
        <Grid.Background>
            <LinearGradientBrush EndPoint="0.803,1.006" StartPoint="0.8,-0.006">
                <GradientStop Color="Black" Offset="0.584"/>
                <GradientStop Color="White" Offset="1"/>
            </LinearGradientBrush>
        </Grid.Background>
        <Button Content="[email protected]" Grid.Column="1" Margin="-137,0,0,153" RenderTransformOrigin="0.5,0.5" Style="{StaticResource ButtonStyle1}" Height="72" VerticalAlignment="Bottom" HorizontalAlignment="Left" Width="278"/>
        <Button Grid.Column="1" Margin="-137,0,0,121" RenderTransformOrigin="0.5,0.5" Style="{StaticResource ButtonStyle1}" Height="72" VerticalAlignment="Bottom" HorizontalAlignment="Left" Width="278" Content="[email protected]" Opacity="0.1">
            <Button.RenderTransform>
                <TransformGroup>
                    <ScaleTransform ScaleY="-1"/>
                    <TranslateTransform Y="10"></TranslateTransform>
                </TransformGroup>
            </Button.RenderTransform>
        </Button>

        <Button Name="btnStart" Content="Play Game" Grid.Column="1" Height="69" HorizontalAlignment="Left" Margin="209,378,0,0"  VerticalAlignment="Top" Width="256" FontFamily="Comic Sans MS" FontSize="26" Background="#FFE2C200" Foreground="#FF570000" Click="btnStart_Click" Opacity="0.5"></Button>
        <Canvas Name="Hit" Margin="267,226,64,239" Width="135" Height="135" Grid.Column="1"></Canvas>
        <TextBlock Name="txtBlog" Text="http://blog.csdn.net/cheng110110" Height="20" VerticalAlignment="Bottom" HorizontalAlignment="Left" Width="300" />
    </Grid>
</UserControl>
           

按F5,不行?呵呵···還有。

3、建立一個使用者控件,命名Music。

silverlight 樂動魔方 實戰四

大功告成了,,這篇是短了點。

不過那跳轉方案可以慢慢琢磨一陣子的·····o(∩_∩)o 、

下次再見~~~

name:5+x

參考文章與書籍

 http://www.cnblogs.com/cyq1162/  部落格園:路過秋天

WPF葵花寶典

繼續閱讀