簡體   English   中英

在Xamarin.Forms上的XAML中將BindingContext設置為ViewModel

[英]Set BindingContext to ViewModel in XAML on Xamarin.Forms

我想使用Xamarin.Form和MVVM開發一個簡單的項目。 在我的解決方案(名為XamarinPOC)我有(除標准Xamarin.Forms項目)為模型一個單獨的項目(XamarinPOC.Model)和視圖模型(XamarinPOC.ViewModel)一個單獨的項目。

我在XamarinPOC.ViewModel定義的項目為BaseViewModel一種抽象類(實現INotifyPropertyChanged接口),我已經創建了一個擴展BaseViewModel類的簡單屬性SummaryViewModel下課后:

namespace XamarinPOC.ViewModel
{
    public class SummaryViewModel : BaseViewModel
    {

        private string _test = "The binding is OK!";
        public String test
        {
            get
            {
                return _test;
            }
            set
            {
                _test = value;
                OnPropertyChanged("test");
            }
        }
        public SummaryViewModel(){}
    }
}

接下來,我在XamarinPOC項目中創建了一個簡單的ContentPage(SummatyView),該項目僅包含我要顯示ViewModel中定義的文本的標簽。 我想使用XAML定義視圖和綁定,但是當我運行該應用程序時,什么都沒有顯示,在編譯時和運行時都沒有錯誤,但是沒有顯示文本。 我的XAML是這個

<?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:local="clr-namespace:XamarinPOC.ViewModel,assembly=XamarinPOC.ViewModel"
             x:Class="XamarinPOC.Summary"
             Title="Summary List"
             BindingContext="XamarinPOC.ViewModel.SummaryViewModel">
  <StackLayout>
    <Label Text="{Binding test}"/>
  </StackLayout>
</ContentPage>

最后,我的app.cs是:

 namespace XamarinPOC
{
     public class App : Application
     {
         public App()
         {
             MainPage = new Summary();
         }
     }
 }

在XamarinPOC項目中,我添加了對XamarinPOC.ViewModel和XamarinPOC.Model程序集的引用。

我認為問題出在綁定的XAML定義中,但是我找不到錯誤。 我哪里錯了?

要將視圖綁定到Xaml的viewmodel,請按以下方式進行操作

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:viewModels="clr-namespace:XamarinPOC.ViewModel; assembly=XamarinPOC.ViewModel"
             x:Class="XamarinPOC.Summary"
             Title="Summary List">
  <ContentPage.BindingContext>
    <viewModels:SummaryViewModel/>
  </ContentPage.BindingContext>
  <StackLayout>
    <Label Text="{Binding test}"/>
  </StackLayout>
</ContentPage>

我注意到的一個旁注是命名約定,最好將所有ViewModels(即使只有一個viewModel)放在名為“ ViewModel s ”的文件夾中,因此您的情況下的命名空間為XamarinPOC.ViewModel s

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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