using System; using Xamarin.Forms; using Xamarin.Forms.Xaml; namespace comal.timesheets { [XamlCompilation(XamlCompilationOptions.Compile)] public partial class SelectionPage { private SelectionPageMode _mode; private Action _configure; private Func _refresh; private Action _selected; public SelectionPage( String title, SelectionPageMode mode, Action configure, Func refresh, Action selected) { _mode = mode; _configure = configure; _refresh = refresh; _selected = selected; InitializeComponent(); Title = title; _selection.Mode = mode; if (_mode != SelectionPageMode.Immediate) { ToolbarItems.Clear(); ToolbarItems.Add(new ToolbarItem("Select", null, DoSelectItems)); } } protected override void OnAppearing() { _selection.Load(); base.OnAppearing(); } private void DoSelectItems() { _selected?.Invoke(_selection.SelectedItems); Navigation.PopAsync(); } private void _selection_OnConfigureColumns(object sender, SelectionViewConfigureArgs args) { _configure?.Invoke(args.Columns); } private object _selection_OnRefresh(object sender, SelectionViewRefreshArgs args) { return _refresh?.Invoke(false); } private void _selection_OnSelectionChanged(object sender, SelectionViewSelectionChangedArgs args) { if (_mode == SelectionPageMode.Immediate) DoSelectItems(); } } }