MVVMCross Benutzerdefinierte Steuerung und Bindung

Ich habe ein benutzerdefiniertes Steuerelement (CustomCard) erstellt, das eine Unterklasse des CardView-Steuerelements ist. Ich möchte dieses Steuerelement in meinem Projekt an verschiedenen Stellen verwenden.

Zum Beispiel kann ich die CustomCard manuell in ein XML-Layout einfügen, oder ich möchte, dass die CustomCard ein Element in einer MvxListView ist. Der Schlüssel ist, dass ich den Code so oft wie möglich wiederverwenden und von der Kontrolle über die CustomCard-Klasse profitieren möchte.

Wenn die CustomCard instanziiert wird, blase ich das Layout mit dem Standard-Layout-Inflater auf, siehe Code:

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);
    }
}

Im Layout base_card.xml habe ich einige Elemente, die ich mit MVVMCross binden möchte, z. B.

<?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>

Mein tatsächliches base_card-Layout ist viel komplexer.

Wenn ich versuche, meine CustomCard in einem anderen XML-Layout zu verwenden, findet keine Bindung statt. Ich glaube, das liegt daran, dass ich den Standard-Layout-Inflater verwende, um meine base_card in meiner CustomCard aufzublasen, anstatt BindingInflate (), aber ich kann nicht sicher sein.

Ich habe in SO und in den Foren gesucht, kann jedoch keine Verweise auf Personen finden, die ein benutzerdefiniertes Steuerelement verwenden, das die eigene Ansicht aufbläst, wenn es mit MVVMCross-Bindung instanziiert wird.

Hat jemand es getan, oder versuche ich etwas zu tun, was nicht möglich ist?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage