《深入浅出Windows Phone 8 应用开发》读书疑问解惑之控件与布局篇

  自从Windows Phone 7出来之时,本人就有意要学习之并买wp手机,但是碍于工作繁忙,均未能如愿,今年二月份果断入手《深入浅出Windows Phone 8 应用开发》,搭建Win 8/Windows Phone 8开发环境。原本考虑学习Win8 开发,但是觉得Win8的Metro界面虽炫,但是对于习惯win7/Xp操作的用户而言实用性暂时还不大,于是决定先入门Wp8。

  这本书写得非常基础,适合会C#而未做过Wp7的同仁入手,如果学过WP7的,就不建议买了,不过里面还是有不少篇幅讲解Wp8的一些新特性的,例如async异步编程的使用。如果您也在看此书,碰到的疑问不妨也分享出来噢!

  书中例子比较入门,因而我总是想做出更棒的Demo,例如,我在编写代码时一直想我如何能像母版页那样设置一个程序的大体界面风格,我试过编写BasePage,但是这个xaml的分部类中含系统自动生成代码,改不了其继承的基类,因而我目前找不到什么好办法来达到我的上述需求,我目前的解决方案是使用UserControl,但是所有页面都要添加,麻烦啊,如果看到这里能帮我的希望你教我下,不尽感激!!

  好了到这里如果您是WP开发的熟客就不用往下看了,最好给点经验赐教哈。以下开始针对我碰到的问题与解决方法进行记录。

1.编程实现页面跳转:控件HyperlinkButton可以轻松实现,但是如果是编程实现呢,例如在button事件里面去进行跳转,问了下谷哥,使用以下代码即可

this.NavigationService.Navigate(new Uri("/ProgressBarPage.xaml", UriKind.Relative));

2.编码实现诸如“Grid.Row”之类的属性:这个是在编写Gird布局Demo时遇到的,书中给出了计算器的布局,但是都XAML中定义的,而我觉得这样导致了过多的代码Copy,与我的编码原则相悖,因而我必须要循环实现,找了MSDN资料,解决方案http://msdn.microsoft.com/zh-cn/library/vstudio/system.windows.controls.grid.setcolumn(v=vs.90).aspx。

以下是我生成计算器的C#代码

private void PhoneApplicationPage_Loaded_1(object sender, RoutedEventArgs e)
        {
            Button btn = null;
            int j = 0;
            for (int i = 1; i < 10; i++)
            {
                btn = new Button();
                btn.Name = "btn" + i;
                btn.Content = i;
                btn.Width = 150;
                btn.Height = 150;
                btn.FontSize = 80;
                btn.VerticalAlignment = System.Windows.VerticalAlignment.Center;
                btn.HorizontalAlignment = System.Windows.HorizontalAlignment.Center;
                btn.VerticalContentAlignment = System.Windows.VerticalAlignment.Center;
                btn.HorizontalContentAlignment = System.Windows.HorizontalAlignment.Center;
                //btn.SetValue(DependencyProperty.Register("Grid.Row", null, null, null), 3);
                Grid.SetRow(btn, j + 1);
                Grid.SetColumn(btn, (i - 1) % 3);
                ContentPanel.Children.Add(btn);
                if (i % 3 == 0)
                {
                    j++;
                }
            }
        }

XAML代码:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
            <Grid.RowDefinitions>
                <RowDefinition Height="150"></RowDefinition>
                <RowDefinition Height="150"></RowDefinition>
                <RowDefinition Height="150"></RowDefinition>
                <RowDefinition Height="*"></RowDefinition>
                <RowDefinition Height="150"></RowDefinition>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="150"></ColumnDefinition>
                <ColumnDefinition Width="150"></ColumnDefinition>
                <ColumnDefinition Width="150"></ColumnDefinition>
                <ColumnDefinition Width="*"></ColumnDefinition>
            </Grid.ColumnDefinitions> 
        </Grid>

我绝对是WP8的新手,希望能和各位大虾,同仁多多交流分享。

 

posted @ 2013-03-10 12:43  dong.net  阅读(1117)  评论(2编辑  收藏  举报