1.效果演示:
2.目录结构
3.代码
MainPage.xaml
<phone:PhoneApplicationPage
x:Class="Calc.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
shell:SystemTray.IsVisible="True">
<!--LayoutRoot 是包含所有页面内容的根网格-->
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!--TitlePanel 包含应用程序的名称和页标题-->
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
<TextBlock x:Name="ApplicationTitle" Text="我的应用程序" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock x:Name="PageTitle" Text="整数计算器" Margin="9,0,6,0" Style="{StaticResource PhoneTextTitle1Style}" Width="492" />
</StackPanel>
<!--ContentPanel - 在此处放置其他内容-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<TextBox Height="72" HorizontalAlignment="Left" Margin="29,83,0,0" Name="textBox1" Text="数字1" VerticalAlignment="Top" Width="120" TextChanged="textBox1_TextChanged" InputScope="number" GotFocus="textBox1_GotFocus" LostFocus="textBox1_LostFocus" />
<TextBox Height="72" HorizontalAlignment="Left" Margin="155,83,0,0" Name="textBox2" Text="运算符" VerticalAlignment="Top" Width="117" InputScope="EnumString" GotFocus="textBox2_GotFocus" LostFocus="textBox2_LostFocus" />
<TextBox Height="72" HorizontalAlignment="Left" Margin="292,83,0,0" Name="textBox3" Text="数字2" VerticalAlignment="Top" Width="120" InputScope="number" GotFocus="textBox3_GotFocus" LostFocus="textBox3_LostFocus" />
<Button Content="计算" Height="72" HorizontalAlignment="Left" Margin="125,223,0,0" Name="button1" VerticalAlignment="Top" Width="160" Click="button1_Click" />
</Grid>
</Grid>
<!--演示 ApplicationBar 用法的示例代码-->
<!--<phone:PhoneApplicationPage.ApplicationBar>
<shell:ApplicationBar IsVisible="True" IsMenuEnabled="True">
<shell:ApplicationBarIconButton IconUri="/Images/appbar_button1.png" Text="按钮 1"/>
<shell:ApplicationBarIconButton IconUri="/Images/appbar_button2.png" Text="按钮 2"/>
<shell:ApplicationBar.MenuItems>
<shell:ApplicationBarMenuItem Text="菜单项 1"/>
<shell:ApplicationBarMenuItem Text="菜单项 2"/>
</shell:ApplicationBar.MenuItems>
</shell:ApplicationBar>
</phone:PhoneApplicationPage.ApplicationBar>-->
</phone:PhoneApplicationPage>
MainPage.xaml.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;
using Microsoft.Phone.Controls;
namespace Calc
{
public partial class MainPage : PhoneApplicationPage
{
// 构造函数
public MainPage()
{
InitializeComponent();
}
private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
{
}
private void button1_Click(object sender, RoutedEventArgs e)
{
//获取用户输入的数据,然后将获取的数据传递给reult.xaml页面中
String num1 = textBox1.Text;
String oper = textBox2.Text;
String num2 = textBox3.Text;
NavigationService.Navigate(new Uri("/Result.xaml?number1="+num1+"&number2="+num2+"&operation="+oper,UriKind.Relative));
}
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedTo(e);
textBox1.Text = "数字1";
textBox2.Text = "运算符";
textBox3.Text = "数字2";
}
private void textBox2_GotFocus(object sender, RoutedEventArgs e)
{
if (textBox2.Text == "运算符") {
textBox2.Text = "";
}
}
private void textBox3_GotFocus(object sender, RoutedEventArgs e)
{
if (textBox3.Text == "数字2")
{
textBox3.Text = "";
}
}
private void textBox1_GotFocus(object sender, RoutedEventArgs e)
{
if (textBox1.Text == "数字1")
{
textBox1.Text = "";
}
}
private void textBox1_LostFocus(object sender, RoutedEventArgs e)
{
if (textBox1.Text == "")
{
textBox1.Text = "数字1";
}
}
private void textBox2_LostFocus(object sender, RoutedEventArgs e)
{
if (textBox2.Text == "")
{
textBox2.Text = "运算符";
}
}
private void textBox3_LostFocus(object sender, RoutedEventArgs e)
{
if (textBox3.Text == "")
{
textBox3.Text = "数字2";
}
}
}
}
Result.xaml
<phone:PhoneApplicationPage
x:Class="Calc.Result"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480"
shell:SystemTray.IsVisible="True">
<!--LayoutRoot 是包含所有页面内容的根网格-->
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!--TitlePanel 包含应用程序的名称和页标题-->
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
<TextBlock x:Name="ApplicationTitle" Text="我的应用程序" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock x:Name="PageTitle" Text="计算结果为" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>
<!--ContentPanel - 在此处放置其他内容-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<TextBlock Height="235" HorizontalAlignment="Right" Margin="0,79,95,0" Name="textBlock1" Text="TextBlock" VerticalAlignment="Top" Width="280" />
</Grid>
</Grid>
<!--演示 ApplicationBar 用法的示例代码-->
<!--<phone:PhoneApplicationPage.ApplicationBar>
<shell:ApplicationBar IsVisible="True" IsMenuEnabled="True">
<shell:ApplicationBarIconButton IconUri="/Images/appbar_button1.png" Text="按钮 1"/>
<shell:ApplicationBarIconButton IconUri="/Images/appbar_button2.png" Text="按钮 2"/>
<shell:ApplicationBar.MenuItems>
<shell:ApplicationBarMenuItem Text="菜单项 1"/>
<shell:ApplicationBarMenuItem Text="菜单项 2"/>
</shell:ApplicationBar.MenuItems>
</shell:ApplicationBar>
</phone:PhoneApplicationPage.ApplicationBar>-->
</phone:PhoneApplicationPage>
Result.xaml.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;
using Microsoft.Phone.Controls;
namespace Calc
{
public partial class Result : PhoneApplicationPage
{
public Result()
{
InitializeComponent();
}
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedTo(e);
//获取传来的值,在页面中显示出来
try
{
int n1 = Convert.ToInt32(NavigationContext.QueryString["number1"]);
int n2 = Convert.ToInt32(NavigationContext.QueryString["number2"]);
String oper = NavigationContext.QueryString["operation"];
if (oper == " ")
{
oper = "+";
}
int result = 0;
switch (oper)
{
case "+": result = n1 + n2; break;
case "-": result = n1 - n2; break;
case "*": result = n1 * n2; break;
case "/":
if (n2 == 0)
{
MessageBox.Show("除数不能为0!"); NavigationService.GoBack(); break;
}
result = n1 / n2; break;
default: MessageBox.Show("您的运算符输入有误"); NavigationService.GoBack(); break;
}
textBlock1.FontSize = 100;
if (result > 99999) {
MessageBox.Show("结果最大五位数,屏幕放不下了....");
NavigationService.GoBack();
}
this.textBlock1.Foreground = new SolidColorBrush(Colors.Red);
textBlock1.Text = result.ToString();
}
catch {
MessageBox.Show("您的数字输入不正确!");
NavigationService.GoBack();
}
}
}
}