回到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。
大功告成了,,這篇是短了點。
不過那跳轉方案可以慢慢琢磨一陣子的·····o(∩_∩)o 、
下次再見~~~
name:5+x
參考文章與書籍
http://www.cnblogs.com/cyq1162/ 部落格園:路過秋天
WPF葵花寶典