2017-08-06 31 views
0

发生什么事如何通过两个输入值转换器在xamarin安卓

  • 我传递一个布尔值转换器和执行一些动作 (变更可绘制)。

我所试图做

  • 如何两个布尔值传递给一个转换器,并执行一些动作 。
  • 这是可能的如何?
  • 如果不是通过将两个输入到一个 值转换器正确的方法,那么如何解决这个

CONVERTER:CruiseShipIndicatorValueConverter.cs

public class CruiseShipIndicatorValueConverter : MvxValueConverter<bool, int> 
    { 
     protected override int Convert(bool value, Type targetType, object parameter, CultureInfo culture) 
     { 
      if (value) 
      { 
       return Resource.Drawable.up_arrow; 
      } 
      else 
      { 
       return Resource.Drawable.down_arrow; 
      } 
     } 


     protected override bool ConvertBack(int value, Type targetType, object parameter, CultureInfo culture) 
     { 
      return base.ConvertBack(value, targetType, parameter, culture); 
     } 

    } 

XML

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:local="http://schemas.android.com/apk/res-auto" 
    android:orientation="horizontal" 
    android:layout_width="wrap_content" 
    android:layout_height="35dp" 
    android:gravity="center" 
    android:layout_gravity="center" 
    android:padding="2dp"> 
    <MvxImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_centerVertical="true" 
     android:layout_marginRight="2dp" 
     android:gravity="center" 
     android:layout_gravity="center" 
     local:MvxBind="DrawableId QuesSeriesIndicator(questionState)" /> 
</LinearLayout> 
+0

你要不要MultiValueConverter之为知之?看看https://github.com/Keboo/Xamarin.Forms.Proxy –

回答

0

您可以尝试将两个布尔值封装到一个类中或使用Tuple。

您的示例类实现将是这样的。

public class CruiseShipIndicatorValueConverter : MvxValueConverter<Tuple<bool, bool>, int> 

了解更多关于Tuples here

+0

谢谢, 如何将值传递给XML转换器 **我可以试试这个:**'local:MvxBind =“DrawableId QuesSeriesIndicator(questionState1,questionState2)“' ....其中... 'questionState1'和'questionState2'是两个布尔输入 – Devrath

+0

@Devrath,你找到了解决方案吗? – androidStud

0

它非常简单。这可以通过单个值转换器轻松完成。 除了使用元组或其他任何通用数据类型,我们可以通过现有的转换器定义来实现。

例如:

public class CruiseShipIndicatorValueConverter : MvxValueConverter<bool, int> 
{ 

    protected override int Convert(bool value, Type targetType, object parameter, CultureInfo culture) 
    { 
     if (value) 
     { 
      return Resource.Drawable.up_arrow; 
     } 
     else 
     { 
      return Resource.Drawable.down_arrow; 
     } 

     if (parameter is bool) 
     { 
      bool value2 = (bool)parameter; 
      // Here this value2 is the second boolean value. 
     } 
    } 

    protected override bool ConvertBack(int value, Type targetType, object parameter, CultureInfo culture) 
    { 
     return base.ConvertBack(value, targetType, parameter, culture); 
    } 

} 

其中MvxValueConverter,布尔(questionState1)是转换的 “价值” 和int是在转换的返回类型。对于第二个bool值(questionState2),将其作为类型对象的“参数”。

进行结合,我们必须通过WPF发送

local:MvxBind="DrawableId QuesSeriesIndicator(questionState1, questionState2)"