5

freshmvvm フレームワークで xamarin フォームを使用しています。

xaml の使用をスキップして、C# のコード ビハインドからバインド データにアクセスする方法を知りたいです。

役立つコードサンプルはありますか?

4

2 に答える 2

7

これはMVVMの原則に反しますが、もちろんそれを行う方法があります。

MVVM フレームワークがなければ、手動で ViewModel を作成し、BindingContext(ドキュメント) を自分で設定するだけです。(これに関して)MVVMフレームワークがあなたのために行う「唯一の」ことは、自動的にバインドするように設定されているため、同じコードを何度も書くことに煩わされることはありません。

したがって、この ViewModel があると想像してください。FreshMvvm の命名に一致するように PageModel を使用していることに注意してください。

// SamplePageModel.cs
public class SamplePageModel
{
    public string Foo { get; set; } = "Bar";
}

今私のページで、次のように BindingContext を設定します。

// SamplePage.cs
// ... Skipped code, just constructor here:
public SamplePage()
{
    InitializeComponent();

    BindingContext = new SamplePageModel();
}

の任意のプロパティにバインドできるようになりましSamplePageModelた。

FreshMvvm はこの部分を自動的に行います。何らかの理由で ViewModel/PageModel に直接アクセスしたい場合は、逆の手順を実行してください。ページまたはコード ビハインドのどこかで、次のことができます。

// ... Some code here
var pageModel = BindingContext as SamplePageModel;
// ... More code here

pageModelそこにない場合nullは、データがバインドされ、満たされた PageModel があります。

于 2016-06-20T08:45:27.777 に答える