按钮处理程序
数字按钮是通过xaml配置文件将所有项目放在3x4的小格子中实现的,每个数字按钮使用“button[x]”命名,其中x表示该按钮对应的数字。当一个按钮按下时,将这个按钮代表的数字添加到账单数量上,我们可以在Visual Studio 2010中手工添加处理代码,也可以使用C#匿名委托功能实现更多的功能。
{
for (int i = 0; i <= 9; i++)
{
string btnName = "button" + i.ToString();
System.Windows.Controls.Button btn =
(System.Windows.Controls.Button)this.LayoutRoot.FindName(btnName);
int j = i; // avoid local variable capture
btn.Click += new RoutedEventHandler(
(object sender, RoutedEventArgs e) => { TryUpdateBillAmount(textBlockBill.Text + j.ToString()); }
);
}
}
通过这个循环语句使用名字找到所有按钮,然后分别添加处理程序,下面是最有趣的代码部分:
图 5 按钮事件处理程序
这串代码为每个按钮实例定义了一个按钮处理程序,方法定义以(object sender, RoutedEventArgs e)参数列表开头,紧接着是Lambda语法符号==>,然后就是方法实现{ TryUpdateBillAmount(textBlockBill.Text + j.ToString()); }。
每按一下按钮,代码就获得当前的字符串值,追加这个数字到末尾,然后调用TryUpdateBillAmount方法确定是否要更新结果值。
注意其中的int j = i; // avoid local variable capture,局部变量i被看作是一个外部变量,这意味着i可以在堆上获得地址空间,而不是在栈上,不会包含每个循环的值(如果你在委托中使用i,在这个例子中,你获得的值将总是10),为了解决这个问题,我们在循环中声明了一个局部变量j,并捕获它的值。
用模拟器进行调试
调试也很简单,只需要在Visual Studio 2010中按F5即可,默认情况下,模拟器就是你的目标。
图 6 调试时,默认的目标就是模拟器
如果你有一部Windows Phone 7手机,通过USB将它与你的计算机连接,然后就可以将目标改为Windows Phone 7设备。
图 7 调整调试目标为Windows Phone 7设备
现在就可以使用Visual Studio的调式器和模拟器测试应用程序了,例如,想要测试横向模式时,只需选择你要旋转的方向:
图 8 选择横向进行测试
小结
本文使用到的都是Silverlight和C#常见的技术,通过这个例子,我只想告诉大家,其实你之前掌握的Silverlight和C#技术一样可以用于Windows Phone 7应用程序的开发,本文的全部代码可从http://code.msdn.microsoft.com/winphone7tipcalcsamp下载。