MVVMCross ValueConverter Параметр

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

Мой вопрос о ValueConverterпараметры s:

Есть ли способ передать переменную в преобразователь значения, а не постоянное значение как 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"/>

ТИА,

2 ответа

Решение

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

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

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

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

Я должен был сделать что-то подобное пару дней назад: это довольно запутанно:

<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

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

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

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

Другие вопросы по тегам