• 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="Hill@Home" 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="Hill@Home" 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。

    大功告成了,,这篇是短了点。

    不过那跳转方案可以慢慢琢磨一阵子的·····o(∩_∩)o 、

    下次再见~~~

    name:5+x

    参考文章与书籍

     http://www.cnblogs.com/cyq1162/  博客园:路过秋天

    WPF葵花宝典

  • 相关阅读:
    vi 整行 多行 复制与粘贴
    FPGA设计—UVM验证篇 Hello world
    武汉市最大的二手车市场
    vim 使用技巧
    CentOS 7下的软件安装方法及策略
    搜索插件:ack.vim
    Vim插件管理
    【一】 sched.h
    Android USB驱动源码分析(-)
    在Python中反向遍历序列(列表、字符串、元组等)的五种方式
  • 原文地址:https://www.cnblogs.com/cheng5x/p/2839262.html
Copyright © 2020-2023  润新知