双方向モードでViewとViewModeの間に2つのカスタムプロパティをバインドする方法を理解できません。 まず、私は次のように同じのViewModelを持っている:Mvvmcrossカスタムプロパティ間の双方向バインド
//ViewModel
public class MyViewModel : MvxViewModel
{
....
private MyMode _testA
public MyMode TestA
{
get => _testA;
set {
_testA = value;
RaisePropertyChanged(()=> TestA);
}
}
public MyViewModel()
{
TestA = MyMode.A;
}
........
}
とビューに私は私のカスタムプロパティにバインドします:私はViewModelにに種皮を変更した場合
//View
public partial class MyView : MvxViewController<MyViewModel>
{
public MyMode UiTestA
private void SetBiding()
{
var set = this.CreateBindingSet<MyView, MyViewModel>();
set.Bind(this).For(x => x.UiTestA()).To(vm => vm.TestA);
set.Apply();
}
private void SomeMethod()
{
var t1 = UiTestA; // t1 = MyMode.A;
UiTestA = MyMode.B; // Two way binding?
var t2 = ViewModel.TestA; // MyMode.A;
}
}
が、私はビューでこれを得ることができますが、IそれをViewで変更し、ViewModelで新しい値を探したいとします。
、 VMプロパティが更新されなかった理由は、View側からの変更通知がトリガされなかったためです。あなたのVMではRaisePropertyChangedを使います。ビュー側で、以下のようにTargetBindingを作成します。 Mvxがすぐに使える理由は、TextやClickのようなものは、Mvxフレームワークで既に定義されているバインディングを持っているからです。 – Kiliman