A damn at han’s Windows phone book 筆記(6:page navigation & data binding)

來源:互聯網
上載者:User

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}

更多資料繫結的知識,參考http://www.cnblogs.com/Jax/archive/2009/10/13/1582128.html

 

圖片的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! */ }

這樣就只需更改程式集的版本號碼,使用者看到的版本號碼也會自動更新了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.