Hello MVVMCross社区,
我的问题是关于ValueConverter
的参数:
有没有办法将变量传递给值转换器而不是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"/>
TIA,
答案 0 :(得分:4)
使用Windows / XAML IValueConverter
时,您无法将数据绑定条目真正传递到值转换器参数中。
但是,在MvvmCross中使用Tibet绑定扩展,如果您使用以下形式,您应该可以这样做:
local:MvxBind="BackgroundColor Enabled2MvxColor(IsPriceEnabled, Price)"
有关此内容的更多信息 - 以及整个对象绑定,请参阅https://github.com/MvvmCross/MvvmCross/wiki/Databinding
答案 1 :(得分:2)
几天前我不得不做类似的事情:它相当复杂:
<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
我确信有更简单的方法可以做我需要它做的事情,但我想从使用魔法字符串获得;我最后没有得到它,但至少这使我更容易阅读和弄清楚。
所以在转换器中我得到参数,拆分它;然后从值类型,我可以浏览属性并从类中获取实际值。当然我也可以称之为方法。
希望这可能会给你一些想法。