MVVMCross ValueConverter Параметр

Привет, сообщество MVVMCross,

Мой вопрос касается параметров ValueConverters:

Есть ли способ передать переменную в преобразователь значений, а не постоянное значение в виде ConverterParameter?

Что-то типа:

 <EditText
    android:id="@+id/editPrice"
    ...
    local:MvxBind="Text Price; Enabled IsPriceEnabled; BackgroundColor IsPriceEnabled, Converter=Enabled2MvxColor, ConverterParameter=Price"/>

или даже передать весь объект, например:

<EditText
    android:id="@+id/editPrice"
    ...
    local:MvxBind="Text Price; Enabled IsPriceEnabled; BackgroundColor IsPriceEnabled, Converter=Enabled2MvxColor, ConverterParameter=editPrice"/>

ТИА,


person Pap    schedule 21.01.2014    source источник


Ответы (2)


При использовании Windows/XAML IValueConverter вы не можете передавать записи с привязкой к данным в параметр преобразователя значений.

Однако, используя расширения привязки Тибета в MvvmCross, вы сможете сделать это, если используете форму:

local:MvxBind="BackgroundColor Enabled2MvxColor(IsPriceEnabled, Price)"

Подробнее об этом и о привязке всего объекта см. https://github.com/MvvmCross/MvvmCross/wiki/Databinding

person Stuart    schedule 21.01.2014

Мне пришлось сделать что-то подобное пару дней назад: это довольно запутанно:

<controls:OptionItemControl 
ItemTitle="{Binding Path=AccountSettings, Converter={StaticResource ContentItemConverter}, Mode=OneTime, 
ConverterParameter=DataRoaming.Text}"
ItemInfo="{Binding Path=AccountSettings, Converter={StaticResource ContentItemConverter}, Mode=OneTime, 
ConverterParameter=DataRoaming.Info}"
ItemValue="{Binding AccountSettings.DataRoaming, Mode=TwoWay}"
/>

Итак, моя ViewModel имеет свойство AccountSettings, которое является классом, имеющим другое свойство DataRoaming, которое имеет несколько свойств, таких как .Text, .Info

Я уверен, что есть гораздо более простой способ сделать то, что мне нужно, но я хотел получить от использования волшебной строки; Я не понял в конце, но, по крайней мере, мне так легче читать и разбираться.

поэтому в конвертере я получаю параметр, разделяю его; затем из типа значения, и я могу перемещаться по свойствам и получать фактическое значение из класса. Конечно, я мог бы также вызвать метод.

Надеюсь, это может дать вам некоторые идеи.

person Rana Hossain    schedule 24.01.2014