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
Я уверен, что есть гораздо более простой способ сделать то, что мне было нужно, но я хотел получить от использования магической строки; Я не получил это в конце, но по крайней мере это облегчает мне чтение и выяснение.
поэтому в конвертере я получаю параметр, разделить его; затем из типа значения, и я могу перемещаться по свойствам и получить фактическое значение из класса. Конечно, я мог бы также назвать метод.
Надеюсь, что это может дать вам некоторые идеи.