MvvmCross从日历UI获取日期
本文关键字:获取 取日期 UI 日历 MvvmCross | 更新日期: 2023-09-27 18:17:29
我目前有这个ViewModel叫BaseballGameViewModel。我要做的是在日期表单中为我的属性设置一个值,但我希望日期来自日历UI。我在核心中使用MvvmCross,因此它将更多地支持Android和iOS。任何帮助解释任何关于MvvmCross或如何做到这一点是感激的。谢谢你。
class BaseballGameViewModel
{
private string _gameStartDate;
public string GameStartDate
{
get { return _gameStartDate; }
set
{
_gameStartDate = value;
RaisePropertyChanged(() => GameStartDate);
}
}
}
我还没有使用iOS日历控件与MvvmCross,但我可以给你一个Android实现和什么ViewModel需要看起来像,和连接一个iOS控件应该不是太困难。
ViewModel:
DateTime _gameStartDate;
public DateTime GameStartDate
{
get { return _gameStartDate; }
set { SetProperty(ref _gameStartDate, value); }
}
Android活动:Button _button;
DatePickerFragment _datePicker;
protected override void OnCreate(Bundle bundle)
{
_button = FindViewById<Button>(Resource.Id.your_button_id);
_button.Click += Button_OnClick;
}
void Button_OnClick(object sender, EventArgs eventArgs)
{
_datePicker = DatePickerFragment.NewInstance(delegate (DateTime date)
{
ViewModel.GameStartDate = date;
});
_datePicker.Show(FragmentManager, DatePickerFragment.TAG);
}
DatePickerFragment.cs:
public class DatePickerFragment : DialogFragment, IOnDateSetListener
{
public static readonly string TAG = "X:" + typeof(DatePickerFragment).Name.ToUpper();
Action<DateTime> _dateSelectedHandler = delegate { };
public static DatePickerFragment NewInstance(Action<DateTime> onDateSelected)
{
var frag = new DatePickerFragment
{
_dateSelectedHandler = onDateSelected
};
return frag;
}
public override Dialog OnCreateDialog(Bundle savedInstanceState)
{
var currentDate = DateTime.Now;
var dialog = new DatePickerDialog(Activity, this, currentDate.Year, currentDate.Month - 1, currentDate.Day);
return dialog;
}
public void OnDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth)
{
var selectedDate = new DateTime(year, monthOfYear + 1, dayOfMonth);
_dateSelectedHandler?.Invoke(selectedDate);
}
}