MVVMCross ValueConverter参数

时间:2014-01-21 09:56:36

标签: mvvmcross valueconverter

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,

2 个答案:

答案 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

我确信有更简单的方法可以做我需要它做的事情,但我想从使用魔法字符串获得;我最后没有得到它,但至少这使我更容易阅读和弄清楚。

所以在转换器中我得到参数,拆分它;然后从值类型,我可以浏览属性并从类中获取实际值。当然我也可以称之为方法。

希望这可能会给你一些想法。