Xamarin.FormとMVVMを使用して簡単なプロジェクトを開発したいと考えています。 (XamarinPOCという名前の)私のソリューションでは、モデル(XamarinPOC.Model)とViewModel(XamarinPOC.ViewModel)用の別々のプロジェクトが別々のプロジェクト(標準のXamarin.Formsプロジェクトに加えて)を持っています。Xamarin.FormsのXAMLでBindingContextを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です:XamarinPOCプロジェクトで
namespace XamarinPOC
{
public class App : Application
{
public App()
{
MainPage = new Summary();
}
}
}
私はXamarinPOC.ViewModelとXamarinPOC.Modelアセンブリへの参照を追加しました。
私は問題がバインディングのXAML定義にあると思いますが、私はエラーが見つかりません。どこが間違っていますか?私が気づいたワンサイドノートが命名規則では、あなたの場合には、XAMLからのviewmodelにビューをバインドする
だろうので、あなたはBindingContextをあなたのViewModelの*インスタンス*ではなく、クラス定義自体 – Jason