簡體   English   中英

將多個值綁定到一個控件 Xamarin.Android MVMCross MVX

[英]Bind multiple values to one control Xamarin.Android MVVMCross MVX

我喜歡通過 MVX 將 2 個屬性從我的 ViewModel 綁定到我的 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 完成。 請告訴我們

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM