【问题标题】:Multi selection list view using MvxListView with MvvmCross使用 MvxListView 和 MvvmCross 的多选列表视图
【发布时间】:2016-12-03 18:53:55
【问题描述】:

我有一个多选模式的 MvxListView。我想切换其单击的项目颜色。如果它是一个列表视图,那么我可以通过视图上的代码来完成。但是我怎样才能在 MVVMCross 中完成相同的任务?因为 MvxListView Itemclick 是绑定在 View Model 上的,在这里我们没有得到点击的 item 对象。请帮忙

【问题讨论】:

    标签: android xamarin xamarin.android mvvmcross mvxlistview


    【解决方案1】:

    您可以使用ValueConverter 和插件MvvmCross.Plugin.Color(可以在 NuGet 中找到)。

    ValueConverter 可以将Boolean 转换为Color,例如:

    public class BlackOrBlueColorValueConverter : MvxColorValueConverter<bool>
    {
        protected override MvxColor Convert(bool value, object parameter, CultureInfo culture)
        {
            if (value)
                return MvxColors.Black;
            else
                return MvxColors.Blue;
        }
    }
    

    在绑定到MvxListView的类中创建属性Selected

    private bool _selected
    public bool Selected
    {
        get
        {
            return _selected;
        }
        set { _selected = value; RaisePropertyChanged(() => Selected); }
    }
    

    在你的Axml中绑定属性

    local:MvxBind="BackgroundColor BlackOrBlueColor(Selected);"
    

    ItemClickCommand 上,将属性Selected 设置为falsetrue,颜色会发生变化。

    有关价值转换器的更多信息,请查看MvvmCross ValueConverters

    【讨论】:

    • 在这一行本地:MvxBind="TextColor BlackOrBlueColor(IsMine);"这里的 IsMine 是什么?
    • 哎呀,应该是Selected 对帖子进行了编辑,TextColor 应该是 BackgroundColor
    • 谢谢。我会尝试它,但我怀疑它仅适用于单选模式。如果我的 mvxlistview 选择模式是多个,则不起作用。你怎么看?
    • 只要绑定属性Selected,这应该适用于多选。只是为了确保您在List&lt;T&gt;ObservableCollection&lt;T&gt; 中将Selected 属性创建为T.Selected?如果您在 ViewModel 中创建属性,这将不起作用。但是,如果您将其添加到您的项目集合中,它将起作用。
    • 好的,感谢您的帮助和建议。我会尽力的,一定会回复你的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多