簡體   English   中英

無法綁定到文本塊-Windows Phone-MVVM

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM