• 《深入浅出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的新手,希望能和各位大虾,同仁多多交流分享。

  • 相关阅读:
    Jenkins的插件管理(安装和更新插件)
    [Flutter] MacOS/Windows Flutter 环境走一遍
    [Sw] 使用 Swoole Server task/协程 处理大数据量异步任务时注意
    [Sw] Swoole-4.2.9 可以尝试愉快应用 Swoole 协程
    [PHP] 常备的现代 PHP 项目开发准备
    [SF] Symfony 标准 HttpFoundationRequest 实现分析
    [Linux] umask 从三类人群的权限中拿走权限数字
    [Design] 后端程序的高并发与异步
    [Linux]系统管理: 进程管理(ps/top/pstree/kill/pkill), 工作管理, 系统资源查看, 系统定时任务
    [FE] 有效开展一个前端项目-V2 (vuejs-templates/webpack)
  • 原文地址:https://www.cnblogs.com/FreeDong/p/2952581.html
Copyright © 2020-2023  润新知