2016-03-15 1 views
0

Я пытаюсь реализовать конвертер для Android и iOS с помощью MvxValueConverter. Я могу связать строковое значение с помощью моего конвертера. Но если я пытаюсь связать цвет (MvxColor) или видимость (MvxVisibility), используя тот же конвертер, это не работает.Преобразователи стоимости Xamarin не работают в типе данных MvxColor и MvxVisibility

pulic class TwoWayConverter : MvxValueConverter<string, MvxColor> 
{ 
    protected override MvxColor Covert (string value, Type targetType, object parameter, CaultureInfo culture) 
    { 
     return new MvxColor (255,42,0); 
    } 
} 

Переплет:

<TextView local:MvxBind="TextColor color, Converter=TwoWay" /> 
+0

ли вы добавить некоторый код (конвертер и привязок), пожалуйста? –

+0

Пулический класс TwoWayConverter: MvxValueConverter <строка, MvxColor> {защищенное переопределение MvxColor Covert (строковое значение, тип targetType, параметр объекта, культура CaultureInfo) {return new MvxColor (255,42,0); }} – Gijo

+0

Gijo

ответ

0

В TextColor и BackgroundColor связывающие цели не встроены в основные библиотеки MvvMCross. Они являются частью плагина Color: https://github.com/MvvmCross/MvvmCross-Plugins/blob/master/Color/Readme.md

Вы можете установить этот плагин с NuGet путем поиска MvvmCross.Plugin.Color в менеджере пакетов NuGet или установить его из командной строки с помощью

Install-Package MvvmCross.Plugin.Color 

Этот плагин также предлагает конвертеры для преобразования строк в цвета (например, MvxRGBAValueConverter):

Вид

<?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="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Colored Text" 
     local:MvxBind="TextColor Color, Converter=RGBA"/> 

    <EditText 
     local:MvxBind="Text Color" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"/> 
</LinearLayout> 

ViewModel

public class FirstViewModel : MvxViewModel 
{ 
    private string color = "FF00FF"; 
    public string Color 
    { 
     get { return color; } 
     set { SetProperty(ref color, value); } 
    } 
} 

подробнее см: https://github.com/MvvmCross/MvvmCross/wiki/Value-Converters#the-mvx-color-valueconverters