我在Android中有一个MvvmCross MvxSpinner
绑定。用户选择一个值并反映在我的属性MealTypeSelected
中。
<MvxSpinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
local:MvxBind="ItemsSource MealTypeList;SelectedItem MealTypeSelected, Mode=TwoWay" />
微调器允许用户选择膳食类型(早餐,午餐,晚餐等)。膳食类型由称为MealType
的枚举表示。
public enum MealType {Unspecified, Breakfast, Lunch, Dinner, Snack};
我希望通过将微调器初始化为基于显示ViewModel
的时间的值来使用户更容易。因此,如果页面在中午加载,我猜测选择应该是“午餐”。
问题是,我尝试在生命周期的不同位置MealTypeSelected
设置ViewModel
属性:构造函数,Init
和Start
。但无论我做什么,当View加载时,它会将选择返回更改为Enum的默认值,即值“Unspecified”。
是否可以解决此问题,并将MvxSpinner
初始化为特定值?
答案 0 :(得分:1)
尝试将此添加到您的&#34; Setup.cs&#34;文件。我有同样的斗争,这对我有用。不记得我第一次找到解决方案的地方。
protected override void FillTargetFactories(IMvxTargetBindingFactoryRegistry registry)
{
MvxAppCompatSetupHelper.FillTargetFactories(registry);
base.FillTargetFactories(registry);
}
答案 1 :(得分:1)
将MvxSpinner的SelectedItem绑定到我的ViewModel时,我遇到了类似的问题,同时也在ViewModel中设置它。
覆盖我绑定的类型的Equals
修复此问题。
public override bool Equals(object obj)
{
return this.Id == (obj as MyType)?.Id;
}
由于您似乎直接绑定到枚举,因此您可能必须尝试将其包装在另一个对象中。
答案 2 :(得分:0)
Stack Overflow不会让我接受pnavk的评论作为答案,但这是我最终做的。每次用户选择某些内容时,我会将第一个项目更改为列表以选择所选内容。一个丑陋的解决方案,但它工作。如果其他人不接受,看起来您可能需要进行一些自定义绑定。