Я создал пользовательский макет стека для Android с помощью пользовательского рендерера.Граница StackLayout создается с использованием файла XML.Цвет границы определяется в этом XML-файле.Но я хочу динамически изменять цвет этой границы во время выполнения, используя свойство связываемого объекта.Я сделал это с IOS.Но я понятия не имею, как связать привязываемый объект с XML-файлом.Пример моего кода customBorderStacklayout приведен ниже. Пожалуйста, поделитесь своим ценным предложением сделать это.
CustomStackBorder.cs
public class CustomStackBorder : StackLayout
{
public Color BorderColor
{
get { return (Color)GetValue(BorderColorProperty); }
set { SetValue(BorderColorProperty, value); }
}
public static readonly BindableProperty BorderColorProperty =
BindableProperty.Create("BorderColor", typeof(Color), typeof(CustomStackBorder), Color.Gray, BindingMode.TwoWay);
public CustomStackBorder()
{
}
}
CustomStackLayoutRenderer.cs (Android)
public class CustomStackLayoutRenderer : VisualElementRenderer<StackLayout>
{
public CustomStackLayoutRenderer(Context context) : base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<StackLayout> e)
{
base.OnElementChanged(e);
Background = ContextCompat.GetDrawable(this.Context, Resource.Drawable.StackLayoutBorder);
}
}
StackLayoutBorder.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<stroke android:width="0.1dp" android:color="#ff555555"></stroke>
<corners android:topLeftRadius="2dp"
android:topRightRadius="2dp"
android:bottomLeftRadius="2dp"
android:bottomRightRadius="2dp" />
<solid android:color="#ffffff"/>
</shape>