我在Android中具有MvvmCross MvxSpinner绑定(bind)。用户选择一个值,该值会反射(reflect)在我的属性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属性:构造函数,InitStart。但是不管我做什么,在加载 View 时,它都会将选择返回更改为Enum的默认值,即值“未指定”。

有没有办法解决此问题,并将MvxSpinner初始化为特定值?

最佳答案

尝试将其添加到您的“Setup.cs”文件中。我也经历了同样的挣扎,这对我有用。不能记得我第一次找到解决方案的地方。

    protected override void FillTargetFactories(IMvxTargetBindingFactoryRegistry registry)
    {
        MvxAppCompatSetupHelper.FillTargetFactories(registry);
        base.FillTargetFactories(registry);
    }

10-08 17:26