我现在有适用于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/