MVVMCrossを使用していて、MvxDialogFragmentバインディングに問題があります。 私はCore PCLプロジェクトで解決された基本サービスを持っており、基本サービスクラスから派生したiOSとAndroidプロジェクトでカスタムサービスの実装を追加しています。アンドロイドサービスでAndroidのアクセスMvxDialogFragment view from service
私はMvxDialogFragmentインスタンスを作成し、表示さ:
var top = (MvxFragmentActivity)Mvx.Resolve<IMvxAndroidCurrentTopActivity>().Activity;
if (top == null)
{
throw new MvxException("Cannot get current top activity");
}
var dlg = new AlertDialog.Builder(top);
dlg.Create().Show();
dialog = new MyDialog
{
Cancelable = false
};
dialog.Show(top.SupportFragmentManager, "");
と私は簡単なダイアログのレイアウトを持っている:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/test_click_button"
android:text="Test"
app:MvxBind="Click TestClickCommand" />
</LinearLayout>
だから私の目標は、インスタンス化されdialogFragment、から基本サービスコマンドをアクセスもすることですサービスから。どうやってやるの?
代わりに、私のボタンクリックサービスを処理したいが、私のView、ViewModelまたはDialogプロパティがnullであるため、これを行う方法が見つからない。
サービス中のクリックを処理する方法、または自己バインディングを実装する方法はありますか?
あなたがサービスからのビューにアクセスしたい場合、あなたは基本的に間違ってそれをやっています。 Mvvmパターンはそれを行うために作られていません。また、「私は自分のサービスコマンドをどのViewModelにも配置したくありません」と言っています。コマンドはサービスではなく、ViewModelsにあります。 ViewModelsはサービスメソッドを呼び出します。たぶん私は全体のことを誤解している... – xleon
返信いただきありがとうございます!私はその質問を編集しました。主な目標は、ダイアログフラグボタンをサービスコマンドにバインドする方法です – Fragment