gpt4 book ai didi

c# - Xamarin Android Spinner (MvxSpinner) 与语言资源和选定项绑定(bind)

转载 作者:行者123 更新时间:2023-12-03 10:43:09 24 4
gpt4 key购买 nike

我现在在 Android 上遇到了 Spinner (MvxSpinner) 的问题(但后来我也需要在 iOS 上使用它)。我有本周、上周、本月等微调周期过滤器。我的 api 服务需要这个过滤器来获取数据......我的问题是我想可能使用 Period 类型的枚举(或 mb 一些更好的解决方案?)是这样的:

枚举周期类型:

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

我可以列出这些 PeriodTypes 的枚举列表,但我的问题是我需要在 Spinner 字符串中包含语言资源,但在 SelectedPeriod 中我需要知道它的 PeriodTypes.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 列表,其中 Period 将是具有 LocalizedString 和 PeriodType 的对象。在 ViewModel 中,我将拥有这个 TempList,对于 Spinner,我将使用 TempList 中的 LocalizedString 创建字符串列表,当我在 Spinner 中选择一些时,我会找到 item = TempList.Where(q => q.LocalizedString.Equals(_selectedPeriod))我会有 item.PeriodType....

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com