【问题标题】:MvvmCross and ListBox with multiple selectionMvvmCross 和 ListBox 多选
【发布时间】:2014-03-26 10:11:17
【问题描述】:
我想创建列表框。
用户可以在其中选择多个项目(例如删除项目)。
如何用 MvvmCross 做/实现这个?
我正在计划为 windows phone 和 WinRT 平台创建一个应用程序,我想使用 MvvmCross。
对于 windows phone,我找到了支持此功能的 LongListMultiSelector Control (Windows Phone Toolkit)。但这会导致 .xaml 页面中出现更多代码。它也让跨平台应用变得更加复杂。
是否有任何其他跨平台解决方案(需要帮助 MvvmCross)?
提前致谢!
【问题讨论】:
标签:
c#
listbox
windows-runtime
windows-phone
mvvmcross
【解决方案1】:
通常我通过将选择状态放在每个列表项的视图模型中来处理多项选择。
例如,假设我有一个想要多选的Apples 列表。为了支持这一点,在我的 ViewModel 中,我将公开一个 ChooseableApples 列表 - 定义如下:
public class ChooseableApple : MvxNotifyPropertyChanged
{
public Apple Apple { /* INPC - get,set */ }
public bool IsSelected { /* INPC - get,set */ }
}
这将允许我在列表项模板中绑定到IsSelected 以获取选择状态。和Apple 获取Name、Colour 等属性
这可能无法与控件中的“内置”SelectedItem 类型属性完美配合 - 但这些属性在触控环境中往往意义不大 - 它们更适合键盘和鼠标环境 (IMO)