手把手玩转win8开发系列课程(11)

简介:

运行程序

这节的议程,我觉得很简单——运行程序

在vs界面布局的页面都是静态,真正让项目运行起来才是动态的了。只有使其运行起来,这样xaml与C#合二为一,以一个真正的程序显示出来。你可以选择调试菜单,也可以按F5键,这样,能够生成并且在模拟器中运行。运行的结果就是如图所示:

你可以清晰看见这样的效果,①一些来自于viewmodel中的数据源加载到了listview控件中。②我以前定义的一些数据的模板和样式也能在程序中得到了很好的应用。

我们还能够看到了许多真的只有动态运行的才能够看到的效果。譬如说,当光标移动到某一项的上面,这项目才能高亮显示。选择时候,显示不同的状态、这些变化是怎么来的啊?是来自于我源代码文件某项项的配置。

这样,一个项目已经能够运行了,可是这只是第一步。我们还在这个基础上,添加一些东西。使其项目功能更加的丰富。

导入其他的页面

你并非需要把所有的控件和源码单独一个xaml页面和一个源码文件中去。平时,为了项目更加的更加的管理。我们一般是这么做的,我可以创建多个页面,再把这些页面放在一起就ok了。依照这个道理。我这里也也创建了一个叫做NoItemSelected的页面。xaml源代码如下: 


 1 <Page
 2   x:Class="MetroGrocer.Pages.NoItemSelected"
 3   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 4   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 5   xmlns:local="using:MetroGrocer.Pages"
 6   xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
 7   xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 8   mc:Ignorable="d">
 9    <!--Grid控件-->
10   <Grid Background="{StaticResource AppBackgroundColor}" Margin="10">
11     <TextBlock Style="{StaticResource HeaderTextStyle}"
12           FontSize="30" Text="No Item Select </Grid>
13 </Page>

这是一个简单的页面——这个页面是默认生成的。我能在ListView.xaml布局这个主要的页面上添加这个页面。添加页面源代码如下:


1 <!--垂直方式显示 Frame添加页面-->
2 <StackPanel Orientation="Vertical" Grid.Column="1">
3   <TextBlock Style="{StaticResource HeaderTextStyle}" Margin="10"
4         Text="Item Detail"/>
5   <Frame x:Name="ItemDetailFrame"/>
6 </StackPanel>

这个Frame是一个呈现页面的容器,在源代码页面的Navigate方法,可以定义你导航到那个页面。相应的源代码如下:


 1 using MetroGrocer.Data;
 2 using Windows.UI.Xaml.Controls;
 3 using Windows.UI.Xaml.Navigation;
 4 namespace MetroGrocer.Pages {
 5   public sealed partial class ListPage : Page {
 6     ViewModel viewModel;
 7     public ListPage() {
 8       viewModel = new ViewModel();
 9       // … test data removed for brevity
10       this.InitializeComponent();
11       this.DataContext = viewModel;
12      //导航到那个页面
13 ItemDetailFrame.Navigate(typeof(NoItemSelected));
14     }
15     protected override void OnNavigatedTo(NavigationEventArgs e) {
16     }
17     //选择的事件  是当前选择的页面
18     private void ListSelectionChanged(object sender, SelectionChangedEventArgs e) {
19       viewModel.SelectedItemIndex = groceryList.SelectedIndex;
20    }
21   }
22 }

navgiate的方法中参数是系统的,这个类型代表了你要加载的页面类,他是最简单方法获取系统类型的方法。相应的类型是关键字类型。这个结果就是导入到了其他的页面,相应的运行效果如图所示:

这样,就能导入其他的页面。   下一节,我们继续议程。


目录
相关文章
|
10天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1210 5
|
9天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1172 87
|
9天前
|
云栖大会
阿里云云栖大会2025年9月24日开启,免费申请大会门票,速度领取~
2025云栖大会将于9月24-26日举行,官网免费预约畅享票,审核后短信通知,持证件入场
1767 12
|
19天前
|
人工智能 运维 安全
|
2天前
|
资源调度
除了nrm-pm,还有哪些工具可以管理多个包管理器的源?
除了nrm-pm,还有哪些工具可以管理多个包管理器的源?
230 127
|
10天前
|
弹性计算 Kubernetes jenkins
如何在 ECS/EKS 集群中有效使用 Jenkins
本文探讨了如何将 Jenkins 与 AWS ECS 和 EKS 集群集成,以构建高效、灵活且具备自动扩缩容能力的 CI/CD 流水线,提升软件交付效率并优化资源成本。
362 0

热门文章

最新文章