[英]Trouble binding to a textblock - Windows Phone - MVVM
我花了幾個小時試圖找出這個問題。 這是正在發生的事情:
我試圖將標題從ViewModel綁定到我的XAML文件。 所有代碼都執行了(我使用斷點/監視檢查),但是綁定實際上不起作用。 我對開發尤其是MVVM非常陌生,因此很難弄清楚這一點。 相關代碼:
App.Xaml.Cs
private static MainPageViewModel _mainPageViewModel = null;
public static MainPageViewModel MainPageViewModel
{
get
{
if (_mainPageViewModel == null)
{
_mainPageViewModel = new MainPageViewModel();
}
return _mainPageViewModel;
}
}
MainPageModel
public class MainPageModel : BaseModel
{
private string _pageTitle;
public string PageTitle
{
get { return _pageTitle; }
set
{
if (_pageTitle != value)
{
NotifyPropertyChanging();
_pageTitle = value;
NotifyPropertyChanged();
}
}
}
MainPageViewModel
private void LoadAll()
{
var page = new MainPageModel();
page.PageTitle = "title";
MainPageViewModel
public MainPageViewModel()
{
LoadAll();
}
MainPage.xaml.cs中
public MainPage()
{
InitializeComponent();
DataContext = App.MainPageViewModel;
}
MainPage.xaml中
<Grid x:Name="LayoutRoot">
<phone:Panorama Title="{Binding PageTitle}">
我也需要Xaml中的using語句嗎? 我以為我只需要在MainPage.Xaml.Cs文件中設置數據上下文即可。
我很確定我已經為此發布了所有相關代碼。 感謝大家!!
問題在這里,在視圖模型類中:
private void LoadAll()
{
var page = new MainPageModel();
page.PageTitle = "title";
您在這里所做的全部工作就是創建一個本地對象“頁面”-在本地范圍之外的任何地方都無法訪問。 我想您打算做的是使“頁面”成為“ MainPageViewModel”的成員:
public class MainPageViewModel
{
public MainPageModel Model { get; private set; }
private void LoadAll()
{
_page = new MainPageModel();
_page.PageTitle = "title";
}
}
這樣,您就可以綁定到“ PageTitle”屬性-但是請記住,這是一個嵌套屬性,因此您需要:
<phone:Panorama Title="{Binding Model.PageTitle}">
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.