android - 将多个值绑定到一个控件 Xamarin.Android MVVMCross MVX
问题描述
我喜欢通过 MVX 将 ViewModel 中的 2 个属性绑定到我的 EditText 控件中,我尝试了下面的代码,但编译器不批准第二个 local:mvxBind。
<EditText
android:inputType="textMultiLine|textCapSentences|textAutoCorrect"
android:layout_width="match_parent"
android:layout_height="110dp"
android:gravity="top"
local:MvxBind="MaxLength Config.Field.GetMaxLength"
local:MvxBind="Text Config.Field.TextValue"
android:layout_marginBottom="0.0dp"
android:id="@+id/txtValue"/>
我的 ViewModel 有一个配置对象,而配置对象有一个字段对象。当我只绑定 1 个属性时。如果是 Text 属性,它可以正常工作。如果是 MaxLenght 属性,则忽略该值
有人有什么想法吗?
更新:我找到了绑定多个属性的方法:
local:MvxBind="MaxLength Config.Field.GetMaxLength; Text Config.Field.TextValue"
文本绑定是好的...我可以看到 GetMaxLength 属性是在我的 ViewModel 的断点上获取...但在 EditText 控件中仍然被忽略。
我想知道 EditText 属性 MaxLength 是否可以与 MVX 绑定。如果是这样?如何?
解决方案
我在我的视图中做了一个解决方法,并通过 EditView.filters 设置 MaxLength,如下所示:
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
var view = base.OnCreateView(inflater, container, savedInstanceState);
// FIX for max length on Edit Text
if(ViewModel.Config.Field.MaxLength != null)
{
int maxLength = (int)ViewModel.Config.Field.MaxLength;
var editText = view.FindViewById<EditText>(Resource.Id.txtValue);
editText.SetFilters(new Android.Text.IInputFilter[] { new Android.Text.InputFilterLengthFilter(maxLength) });
}
return view;
}
如果有另一种方法可以通过 MVX 进行。请告诉我们
推荐阅读
- firebase - 无法将数据从 firestore 检索到 listview 扑扑
- javascript - 如何减少对象数组
- android - 在 Android 10(及更高版本)上,如何以编程方式检测哪个应用程序在外部/辅助屏幕的前台运行?
- javascript - 如何为购物车制作数量变化功能?
- python - 如何从 PYCHARM 中找到正确的 python 解释器并在 cmd 中使用相同的解释器?
- javascript - for循环中的随机延迟setTimeout
- autodesk-forge - 有没有办法在查看器中使用 BoxSelection 扩展启用部分选择
- java - 您可以垂直打印生成的随机数(10 个整数)一维数组吗?
- python - Pytest 测试套件在 GitHub Actions 上随机出现错误,无需更改
- python - 从 csv 文件动态创建数据框