在MvvmCross中,如何执行自定义绑定属性
我MvxBindableListView
用来将List<>
数据对象绑定到ListView
。我用于行的布局有几个TextView
s。我已经成功地将Text
每个属性绑定到数据对象中的一个属性,但是我发现我无法绑定到TextColor
该属性,因为该属性在Mono
For
Android中不存在TextView
;相反,您已经使用了该SetTextColor()
方法。那么如何将数据对象属性绑定到方法?以下是我尝试使用的代码:
<TextView android:id="@+id/MyValueTextView"
android:layout_width="50dp"
android:layout_height="20dp"
android:layout_gravity="right"
android:gravity="center_vertical|right"
android:textSize="12sp"
local:MvxBind="
{
'Text':{'Path':'MyValue','Converter':'MyValueConverter'},
'TextColor':{'Path':'MyOtherValue','Converter':'MyOtherConverter'}
}" />
回答:
在会议示例中有一个示例为“ IsFavorite”添加自定义2向绑定-请参见:
- 绑定-https: //github.com/slodge/MvvmCross/blob/master/Sample%20-%20CirriousConference/Cirrious.Conference.UI.Droid/Bindings/FavoritesButtonBinding.cs
- 在绑定设置
FillTargetFactories
在https://github.com/slodge/MvvmCross/blob/master/Sample%20-%20CirriousConference/Cirrious.Conference.UI.Droid/Setup.cs
在以下示例中进一步解释了此示例:Android中的MVVMCross
Bindings
对于单向“源到目标”自定义绑定,该代码应该更简单-您只需要处理SetValue
-,而无需FireValueChanged
在任何事件处理代码中调用。
对于textColor,我想绑定应该有点像:
public class MyCustomBinding : MvxBaseAndroidTargetBinding
{
private readonly TextView _textView;
public MyCustomBinding(TextView textView)
{
_textView = textView;
}
public override void SetValue(object value)
{
var colorValue = (Color)value;
_textView.SetTextColor(colorValue);
}
public override Type TargetType
{
get { return typeof(Color); }
}
public override MvxBindingMode DefaultMode
{
get { return MvxBindingMode.OneWay; }
}
}
并设置为:
protected override void FillTargetFactories(MvvmCross.Binding.Interfaces.Bindings.Target.Construction.IMvxTargetBindingFactoryRegistry registry) {
base.FillTargetFactories(registry);
registry.RegisterFactory(new MvxCustomBindingFactory<TextView>("TextColor", (textView) => new MyCustomBinding(textView)));
}
注意:我尚未编译此示例代码-当您使其正常工作时,请返回并更正此伪代码:)
以上是 在MvvmCross中,如何执行自定义绑定属性 的全部内容, 来源链接: utcz.com/qa/411762.html