[英]How to set BindingContext of multiple pages to the same ViewModel in Xamarin.Forms?
[英]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.