mvvmcross组中的单选按钮的不同图像

时间:2015-02-19 16:53:04

标签: android image xamarin radio-button mvvmcross

我正在使用mvvmcross for android app。我正在尝试为每个按钮创建一组具有特定图像的动态radiobuttons。除了没有图像外,一切都很顺利。

父斧:

<Mvx.MvxRadioGroup
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/textLanguage"
    android:layout_alignLeft="@id/textLanguage"
    android:layout_marginLeft="20dp"
    local:MvxItemTemplate="@layout/radioitem"
    local:MvxBind="ItemsSource LanguageImageList;SelectedItem SelectedLanguage" />

RadioItem.axml:

<RadioButton xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    local:MvxBind="Text Key; Bitmap Value, Converter=MvxImageConverter" />

我的转换器:

public class MvxImageConverter : MvxValueConverter<string, Bitmap>
{
    protected override Bitmap Convert(string value, Type targetType, object parameter, CultureInfo cultureInfo)
    {
        var imageLoader = Mvx.Resolve<IMvxLocalFileImageLoader<Bitmap>>();
        MvxImage<Bitmap> image = imageLoader.Load(value, true);
        return image.RawImage;
    }
}

在调试器中调用convertor方法并且 image.RawImage 不是 null 或为空。

最后是viewModel:

    private string _selectedLanguage;
    public string SelectedLanguage
    {
        get { return _selectedLanguage; }
        set 
        { 
            _selectedLanguage = value; 
            RaisePropertyChanged(() => SelectedLanguage);
            LanguageChanged();
        }
    }

    public Dictionary<string, string> LanguageImageList
    {
        get { return new Dictionary<string, string>() { { "US", "res:lang_us_small" }, { "UK", "res:lang_uk_small" }, { "FR", "res:lang_fr_small" }, { "GE", "res:lang_ge_small" } }; }
    }

我尝试了不同的绑定关键字而不是“Bitmap”:“DrawableId”,“DrawableName”,“Image”,“ImageUrl”,“Button”,“Style”。没运气。在输出中,我总是看到消息,该值无法绑定到指定的关键字。

如果我在父axml中创建静态单选按钮并为每个单选按钮提供图像的特定链接,我可以看到图像但绑定不起作用,即不调用 SelectedLanguage 的setter。顺便说一句我不喜欢这个解决方案。

mvvmcross是否有可能为每个按钮创建一个动态(或至少是静态)的单选按钮组?

所需图片:http://i.stack.imgur.com/elIap.png

更新:我已经为简单复制创建了示例项目:https://github.com/midmmi/mvvmcross_radio_buttons

0 个答案:

没有答案