問題
在某些情況下,需要讓導航頁面的名稱能夠動態顯示不同的名稱,而不是固定一成不變同樣的文字,要使用甚麼方式來做到呢?
解答
在我們使用 MVVM 模式架構開發下,您可以使用資料繫結方式,把ViewModel內的某個屬性,綁定到 ContentPage.Title 這個屬性上;如此,當您想要顯示某個文字成為這個頁面的標題,就可以在頁面中動態顯示出不同文字頁面標題文字。
底下為在 ContentPage 內,指定 Title 這個屬性要綁訂到 PageTitle 這個屬性上。
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
prism:ViewModelLocator.AutowireViewModel="True"
x:Class="foo.Views.MyPage"
Title="{Binding PageTitle}"
>
在檢視模型中,首先先要宣告一個 PageTitle 這個屬性
#region PageTitle
private string _PageTitle;
/// <summary>
/// PageTitle
/// </summary>
public string PageTitle
{
get { return this._PageTitle; }
set { this.SetProperty(ref this._PageTitle, value); }
}
#endregion
接著,您可以在檢視模型的建構式或者 OnNavigatedTo 事件中,設定 PageTitle 這個屬性的文字值,如此,當應用程式顯示這個頁面的時候,就會有不同的頁面標題文字了。
public async void OnNavigatedTo(NavigationParameters parameters)
{
PageTitle = "這是客製頁面名稱";
}