我现在有适用于Android的Spinner(MvxSpinner)问题(但稍后我也需要适用于iOS)。我在旋转器周期过滤器中有“本周”,“上周”,“本月”等。此过滤器需要我的api服务来获取数据...我的问题是我可能想使用Enum of Period类型(或mb一些更好的解决方案?)像这样:

枚举期间类型:

public enum PeriodTypes
    {
        Unknown = -1,
        LastSevenDays = 0,
        LastWeek = 1,
        ThisWeek = 2
    }

我可以列出这些PeriodTypes的枚举,但是我的问题是我需要在Spinner字符串中包含语言资源,但是在SelectedPeriod中,我需要知道例如Periodiod.LastWeek并将其用于从api服务获取数据,而现在不像现在那样只是字符串在语言资源方面...

我的问题是,如果我可以使用某些对象,例如将使用具有资源重排语言的字符串文本,并将在Spinner中显示,在此对象中,我需要具有Enum或Enum类型的Id,在SelectedPeriod中,我将知道选择了什么。 ...一些技巧如何制作?

我的ViewModel实现现在是:
public void Init(Shop shop)
        {
            _shop = shop;
            _shopName = shop.Name;
            InitializePeriodList();
            InitializeDailySales();
        }

        private void InitializePeriodList()
        {
            _periodList = new List<string>();

            _periodList.Add(CoreResources.Instance.LocalizedString(Constants.Periods, "LastSevenDays"));
            _periodList.Add(CoreResources.Instance.LocalizedString(Constants.Periods, "ThisWeek"));
            _periodList.Add(CoreResources.Instance.LocalizedString(Constants.Periods, "LastWeek"));

            string first = null;
            foreach (var s in _periodList)
            {
                first = s;
                break;
            }
            _selectedPeriod = first != null ? _periodList.FirstOrDefault() : CoreResources.Instance.LocalizedString(Constants.InfoMessages, "Error");
        }


   private List<string> _periodList;
        public List<string> PeriodList
        {
            get { return _periodList; }
            set
            {
                _periodList = value;
                RaisePropertyChanged(() => PeriodList);
            }
        }

        private string _selectedPeriod;
        public string SelectedPeriod
        {
            get { return _selectedPeriod; }
            set
            {
                _selectedPeriod = value;
        InitializeDailySales();
                RaisePropertyChanged(() => SelectedPeriod);
            }
        }

布局实现:
 <MvxSpinner

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:id="@+id/periodSpinner"

        local:MvxBind="ItemsSource PeriodList; SelectedItem SelectedPeriod"

        android:spinnerMode="dropdown" />

最佳答案

嗯,我有个主意。我可以创建一种方法,该方法将返回“周期列表”,其中“Period”将是LocalizedString和PeriodType的对象。在ViewModel中,我将拥有此TempList,对于Spinner,我将从TempList中仅创建带有LocalizedString的字符串列表,当我在Spinner中进行选择时,我将找到item = TempList.Where(q => q.LocalizedString.Equals(_selectedPeriod))我将获得item.PeriodType ....

关于c# - Xamarin Android Spinner(MvxSpinner)与语言资源和selecteditem绑定(bind),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44324152/

10-12 04:53