MVVMCross Custom Control и привязка
Я создал пользовательский элемент управления (CustomCard), который является подклассом элемента управления CardView. Я хотел бы использовать этот элемент управления в моем проекте в разных местах.
Например, я могу поместить карту CustomCard в макет xml вручную или я хочу, чтобы карта CustomCard была элементом в MvxListView. Ключевым моментом является то, что я хотел бы использовать код как можно больше и получить выгоду от контроля над классом CustomCard.
Когда создается карта CustomCard, я раздуваю ее макет с помощью стандартного макета, см. Код:
using System;
using Android.Animation;
using Android.Content;
using Android.Support.V7.Widget;
using Android.Util;
using Android.Views;
using Android.Widget;
public class Card : CardView
{
private readonly Context _context;
public Card(Context context)
: base(context)
{
_context = context;
Init();
}
public Card(Context context, IAttributeSet attrs)
: base(context, attrs)
{
_context = context;
Init();
}
private void Init()
{
var inflater = (LayoutInflater) _context.GetSystemService(Context.LayoutInflaterService);
CardView = inflater.Inflate(Resource.Layout.base_card, this);
}
}
В макете base_card.xml у меня есть некоторые элементы, которые я хотел бы связать с помощью MVVMCross, например,
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white">
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:id="@+id/basecard_title"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Title Text-->
<TextView
android:id="@+id/tv_basecard_header_title"
style="@style/card.title"
android:text="title text"
local:MvxBind="Text Title"
/>
<!-- ImageView -->
<MvxImageView
android:id="@+id/ib_basecard_header_button_expand"
style="@style/card.image"
local:MvxBind="Bitmap ImageBytes,Converter=InMemoryImage"/>
</RelativeLayout>
</FrameLayout>
Мой фактический макет base_card намного сложнее.
Если я пытаюсь использовать свою CustomCard в другом XML-макете, привязка не выполняется. Я думаю, что это потому, что я использую стандартную разметку для раздувания моей base_card в моей CustomCard, а не BindingInflate (), но я не уверен.
Я искал на SO и на форумах, но не могу найти никаких ссылок на кого-либо, использующего пользовательский элемент управления, который раздувает его собственное представление при создании экземпляра с привязкой MVVMCross.
Кто-нибудь сделал это, или я пытаюсь сделать что-то, что невозможно?