博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
A damn at han’s Windows phone book 笔记(6:page navigation & data binding)
阅读量:6786 次
发布时间:2019-06-26

本文共 2541 字,大约阅读时间需要 8 分钟。

NavigationService

用Navigate打开某一页:

this.NavigationService.Navigate(new Uri(“/InstructionsPage.xaml”,UriKind.Relative));

还可以用GoBack和GoForward打开某一页。

用GoBack和GoForward打开的是之前打开过的那个页面的实例,但是用Navigate打开的就是一个新实例了。

 

不要出现back和forward按钮,back有物理按钮,forward没有必要。GoForward会将当前页压入back stack,并清空forward stack。

如果要特意强调可以取消,可以用取消按钮。

 

页面间传递数据

1. 静态变量。

2. query string: 用携带的参数传递数据,限制:只能向前传,无法向后传,参数要方便用字符串表达。

this.NavigationService.Navigate(

new Uri(“/DetailsPage.xaml?categoryIndex=” + this.categoryIndex + “&signIndex=” + this.ListBox.SelectedIndex, UriKind.Relative));

给参数赋值

if (this.NavigationContext.QueryString.ContainsKey(“categoryIndex”)) 是否包含某个参数

int.Parse(this.NavigationContext.QueryString[“categoryIndex”]) 解析出参数

 

Data Binding

可以先在xaml中设置好绑定,C#代码中给DataContext赋值来完成绑定。

例如:this.DataContext = sign;

DataContext的类型是object,所以可以用任何一个对象为其赋值。页面上的子元素会继承其父元素的DataContext。

另外,有ItemSource属性绑定起来比较简单。

例如:

foreach (Sign sign in Data.Categories[this.categoryIndex].Signs)

{

    this.ListBox.Items.Add(sign);

}

因为ListBox有ItemSource属性,因此可以如下调用:

this.ListBox.ItemsSource = Data.Categories;

 

INotifyPropertyChanged接口

绑定对象的某个属性使其UI自动更新,要让该对象的类别实现INotifyPropertyChanged接口,方法如下:

public class UserInfo : INotifyPropertyChanged{    public string UserName { get; set; }    private int age;    public int Age    {        get        {            return this.age;        }        set        {            if (this.age != value)            {                this.age = value;                OnPropertyChanged("Age");            }        }    }    #region INotifyPropertyChanged Members    public event PropertyChangedEventHandler PropertyChanged;    private void OnPropertyChanged(string propertyName)    {        PropertyChangedEventHandler handler = this.PropertyChanged;        if (handler != null)        {            handler(this, new PropertyChangedEventArgs(propertyName));        }    }    #endregion}

更多数据绑定的知识,参考

 

图片的Strech属性

 

Uri什么时候该以/开头

Navigation URI 必须有

指向BuitldAction=Resource的资源文件的URI 必须没有

指向BuitldAction=Content的资源文件的URI 有没有都行

可以简单记:Navigation URI有,资源文件没有。

 

每个App都应该有个About Page

获得版本号的方法:

try{    string s = typeof(AboutPage).Assembly.ToString();    // s形如:WindowsPhoneApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null    if (s != null && s.IndexOf("Version=") >= 0)    {        s = s.Substring(s.IndexOf("Version=") + "Version=".Length);        s = s.Substring(0, s.IndexOf(","));        this.VersionTextBlock.Text = "version " + s;    }}catch { /* Never mind! */ }
这样就只需更改程序集的版本号,用户看到的版本号也会自动更新了。

转载于:https://www.cnblogs.com/dc10101/archive/2011/10/16/2214207.html

你可能感兴趣的文章
如何防止http请求数据被篡改
查看>>
MyEclipse 2013集成JRebel
查看>>
indexOf()
查看>>
go语言学习
查看>>
tidb 安装
查看>>
phpcms V9.6.0版本整合百度ueditor1.4.3.2,包括水图片上传水印
查看>>
Tiptop GP中Excel的控制方法
查看>>
JavaWeb分页技术总结
查看>>
基于unity框架构造IOC容器
查看>>
Windows更新导致的打印问题
查看>>
Chrome 控制台不完全指南
查看>>
Notification与多线程
查看>>
高可用、高扩展性、负载均衡
查看>>
VIM用法
查看>>
oscache.properties文件配置
查看>>
新建索引的一些原则
查看>>
redis发布了集群版3.0.0 beta
查看>>
使用Gradle在嵌入式Web容器Jetty中运行Web应用
查看>>
100-98
查看>>
Innodb中的事务隔离级别和锁的关系
查看>>