我尝试绑定到一个ImageView阿尔法属性,我创建了一个转换器来设置布尔值。但我不认为设定的价值。
这是我的转换器
public class BooleanToOpacity : MvxValueConverter<bool,int>
{
protected override int Convert(bool value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var boolean = value as bool?;
if (boolean.Value == true)
{
return 1;
}
else
{
return 127;
}
}
protected override bool ConvertBack(int value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value > 127)
{
return true;
}
else
{
return false;
}
}
}我使用一个整数值,因为Alpha值是0到255。
这是我的行到绑定值。
local:MvxBind="alpha TwitterPost, Converter=BooleanToOpacity" />Mvx追踪我这个
MvxBind:Warning: 11.56 Failed to create target binding for binding alpha for TwitterPost
[0:] MvxBind:Warning: 11.56 Failed to create target binding for binding alpha for TwitterPost
10-21 15:54:22.280 I/mono-stdout(12096): MvxBind:Warning: 11.56 Failed to create target binding for binding alpha for TwitterPost有什么想法吗?
提前谢谢。
发布于 2013-10-21 08:34:29
在C#中,"Alpha“没有可用的Xamarin.Android属性,因此Mvx框架不知道如何绑定到它。
如果您愿意,可以为此创建一个自定义绑定--比如:
public class ImageViewAlphaTargetBinding : MvxAndroidTargetBinding
{
public ImageViewAlphaTargetBinding (ImageView target) : base(target)
{
}
protected override void SetValueImpl(object target, object value)
{
var imageView = (ImageView)target;
imageView.SetMyProperty((int)value);
}
public override Type TargetType
{
get { return typeof(int); }
}
}在Setup.cs注册:
protected override void FillTargetFactories(Cirrious.MvvmCross.Binding.Bindings.Target.Construction.IMvxTargetBindingFactoryRegistry registry)
{
registry.RegisterCustomBindingFactory<ImageView>(
"Alpha",
v=> new ImageViewAlphaTargetBinding (v) );
base.FillTargetFactories(registry);
}或者,您可以从ImageView继承并提供公开Alpha属性的自定义视图。
有关这两种选项的更多信息,请参见:
发布于 2017-02-21 12:52:52
<ImageView android:layout_width="match_parent"
android:layout_height="match_parent"
local:MvxBind="Alpha IsImageEnable , Converter = BoolToAlpha" />
public class BoolToAlphaValueConverter : BaseValueConverter<bool, Single>
{
protected override Single Convert(bool value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
Single alphavalue;
if (value)
{
alphavalue = 1.0f;
}
else {
alphavalue = 0.35f;
}
return alphavalue;
}
}https://stackoverflow.com/questions/19488966
复制相似问题