MvvmCross Android绑定代码

埃斯卡

我有一个MVX感知活动,该活动具有类型的视图模型AViewModelAViewModel具有类型的属性BViewModelAView创建创建在代码的子视图的外部函数。子视图可能如下所示:

var editText = new EditText(context);
editText.LayoutParameters = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.WrapContent);
editText.TextSize = 40f;

var textView = new TextView(context);
textView.LayoutParameters = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.WrapContent);
textView.TextSize = 40f;

var linearLayout = new LinearLayout(context);
linearLayout.LayoutParameters = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.MatchParent);

linearLayout.AddView(editText);
linearLayout.AddView(textView);

linearLayout随后被添加到AView当我运行它时,视图将正确显示。现在我需要为其添加绑定。

创建子视图的外部代码仅知道BViewModel它没有任何线索AViewModel,所以我尝试创建一个新的绑定上下文和所有者

class BindingContextOwner : IMvxBindingContextOwner
{
    public BindingContextOwner(IMvxBindingContext bindingContext)
    {
        this.BindingContext = bindingContext;
    }

    public IMvxBindingContext BindingContext { get; set; }
}

var contentContext = new MvxAndroidBindingContext(this, this);
contentContext.DataContext = this.ViewModel.BViewModel;

var contentBindingOwner = new BindingContextOwner(contentContext);

this我的MVX意识活动在哪里然后我将contentBindingOwner传递给我的外部代码,并尝试进行绑定

var set = bindingOwner.CreateBindingSet<IMvxBindingContextOwner, BViewModel>();
set.Bind(editText).For(v => v.Text).To(vm => vm.Foo).TwoWay();
set.Bind(textView).For(v => v.Text).To(vm => vm.Foo)
set.Apply();

当我运行代码时,视图将正确显示,但是绑定不起作用。什么也没发生,而且我看不到任何有帮助的日志消息。

有人知道我在这里做错了吗?

编辑:现在,我感到愚蠢。我的代码工作得很好。问题是我没有看到文本视图,因为默认情况下线性布局是水平的。因此文本视图不可见。好吧,也许这篇文章是很好的参考。

埃斯卡

该代码有效,问题在于文本视图不可见。有关详细信息,请参见OP!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将Android按钮的Enabled属性与MvvmCross绑定

来自分类Dev

MVVMCross布尔绑定

来自分类Dev

Mvvmcross MvxSimpleTableViewSource绑定

来自分类Dev

MvvmCross绑定到InteractionRequest

来自分类Dev

Android RatingBar的MvvmCross实现

来自分类Dev

如何使用MVVMCross绑定Android RadioGroup的RadioButton

来自分类Dev

MVVMCross Messenger插件Android

来自分类Dev

Xamarin中的Android ExpandableListView,可与MvvmCross绑定

来自分类Dev

MvvMCross绑定到Android布局中的<include>

来自分类Dev

MvvmCross Android:屏幕旋转后绑定丢失

来自分类Dev

Mvvmcross在代码上绑定片段的子代

来自分类Dev

mvvmcross中的UIAlertController绑定

来自分类Dev

MVVMCross,FieldBinding插件,iOS,代码绑定不起作用

来自分类Dev

mvvmcross videoview URL绑定

来自分类Dev

MvvmCross绑定+ Android EventHandler

来自分类Dev

MVVMCross Android:绑定值未更新

来自分类Dev

MvvmCross Checkbox绑定到命令android xml

来自分类Dev

MvvmCross Android绑定代码

来自分类Dev

MvvmCross中的BackgroundColor绑定

来自分类Dev

Xamarin Android MvvmCross入门

来自分类Dev

带参数的MvvMCross绑定命令(在C#代码中)

来自分类Dev

MvvmCross绑定图像与ImageButton

来自分类Dev

Mvvmcross MvxSimpleTableViewView绑定

来自分类Dev

Android中的Mvvmcross Presenter

来自分类Dev

mvvmcross android intent插件

来自分类Dev

MvvmCross绑定中的更改

来自分类Dev

MvvmCross Android UI 组件

来自分类Dev

MVVMCross Android 按钮启用

来自分类Dev

使用 MvvmCross 绑定 Android 服务