技术开发 频道

VS2010实战:构建横向布局的WP7应用程序

  按钮处理程序

  数字按钮是通过xaml配置文件将所有项目放在3x4的小格子中实现的,每个数字按钮使用“button[x]”命名,其中x表示该按钮对应的数字。当一个按钮按下时,将这个按钮代表的数字添加到账单数量上,我们可以在Visual Studio 2010中手工添加处理代码,也可以使用C#匿名委托功能实现更多的功能。

private void InitButtonHandlers()

  {

  
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下载。

0
相关文章