123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- using System;
- using System.Linq;
- using System.Windows.Input;
- using Xamarin.Forms;
- using Xamarin.Forms.Xaml;
- using XF.Material.Forms.UI.Dialogs;
- namespace comal.timesheets
- {
- public class MobileListRefreshEventArgs : EventArgs
- {
- }
-
- public delegate void MobileListRefreshEvent(object sender, MobileListRefreshEventArgs args);
-
-
- public class MobileListItemTappedEventArgs : EventArgs
- {
- }
-
- public delegate void MobileListItemTappedEvent(object sender, MobileListItemTappedEventArgs args);
-
- public class MobileListViewModel : BindableObject
- {
- public int RowHeight { get; set; }
- public DataTemplate ItemTemplate { get; set; }
-
- public object ItemsSource { get; set; }
- public bool PullToRefresh
- {
- get;
- set;
- }
-
- public event MobileListRefreshEvent Refresh;
-
- public ICommand RefreshCommand => new Command(DoRefresh, CanRefresh);
- private bool CanRefresh(object sender) => PullToRefresh;
- private void DoRefresh(object sender)
- {
- IsRefreshing = true;
- Refresh?.Invoke(sender, new MobileListRefreshEventArgs());
- IsRefreshing = false;
- }
- public bool IsRefreshing { get; private set; }
-
-
- }
-
- // public class MobileListDataTemplateSelector : DataTemplateSelector
- // {
- //
- // protected override DataTemplate OnSelectTemplate(object item, BindableObject container) => new DataTemplate(typeof(DeliveryListEntry));
- // }
- [XamlCompilation(XamlCompilationOptions.Compile)]
- public partial class MobileList
- {
- public bool PullToRefresh
- {
- get => _viewmodel.PullToRefresh;
- set => _viewmodel.PullToRefresh = value;
- }
- public int RowHeight
- {
- get => _viewmodel.RowHeight;
- set => _viewmodel.RowHeight = value;
- }
-
- public DataTemplate ItemTemplate
- {
- get => _viewmodel.ItemTemplate;
- set => _viewmodel.ItemTemplate = value;
- }
- public object ItemsSource
- {
- get => _viewmodel.ItemsSource;
- set => _viewmodel.ItemsSource = value;
- }
-
- public event MobileListRefreshEvent Refresh;
- public event MobileListItemTappedEvent ItemTapped;
-
- public MobileList()
- {
- InitializeComponent();
-
- _viewmodel.Refresh += DoRefresh;
- }
- private async void DoRefresh(object sender, MobileListRefreshEventArgs args)
- {
- Refresh?.Invoke(this, new MobileListRefreshEventArgs());
- }
- private void Cell_OnTapped(object sender, EventArgs e)
- {
- //if (sender is ViewCell viewcell)
- // ItemTapped?.Invoke(viewcell.BindingContext, new MobileListItemTappedEventArgs());
- }
- private void _list_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
- {
- if (e.CurrentSelection.Any())
- ItemTapped?.Invoke(e.CurrentSelection.First(), new MobileListItemTappedEventArgs());
- }
- }
- }
|