在c#中更新MVVMCross中TextView的Alpha

问题描述 投票:0回答:1
android mobile xamarin.android mvvmcross
1个回答
0
投票

可能 MvvmCross 没有内置支持直接绑定 TextView 的 Alpha 属性。 您需要为此目的创建自定义绑定。

创建自定义绑定:

public class AlphaTextViewTargetBinding : MvxAndroidTargetBinding<TextView, int>
{
    public BackgroundViewTargetBinding(TextView view) : base(view)
    {
    }

    // Alpha from 0 to 255
    protected override void SetValueImpl(TextView target, int value)
    {
        target.Alpha = value;
    }

    public override MvxBindingMode DefaultMode => MvxBindingMode.OneWay;
}

注册自定义绑定(Setup.cs)

protected override void FillTargetFactories(IMvxTargetBindingFactoryRegistry registry)
{
            base.FillTargetFactories(registry);

            registry.RegisterFactory(new MvxCustomBindingFactory<TextView>("Alpha",
                view => new AlphaTextViewTargetBinding(view)));
}

在 XML 中使用自定义绑定:

<TextView
    style="@style/B1.TextView"
    android:layout_width="32dp"
    android:layout_height="32dp"
    android:background="@drawable/shape_circle_bluescale1"
    android:gravity="center"
    android:text="@string/plus"
    android:textColor="@color/bluescale4"
    app:MvxBind="Click IncrementQuantityCommand; Alpha QtyAlpha;"/>

我目前使用MvvmCross版本8.0.2进行演示 目的。请注意,覆盖方法可能会有所不同,具体取决于 正在使用的版本。

希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.