Skip to content

Commit

Permalink
Add properties to hide global header/footer
Browse files Browse the repository at this point in the history
  • Loading branch information
Redth committed Aug 19, 2023
1 parent 23f83cc commit e3de814
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 2 deletions.
18 changes: 18 additions & 0 deletions VirtualListView/Controls/VirtualListView.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,15 @@ public IView GlobalHeader
public static readonly BindableProperty GlobalHeaderProperty =
BindableProperty.Create(nameof(GlobalHeader), typeof(IView), typeof(VirtualListView), default);

public bool IsHeaderVisible
{
get => (bool)GetValue(IsHeaderVisibleProperty);
set => SetValue(IsHeaderVisibleProperty, value);
}

public static readonly BindableProperty IsHeaderVisibleProperty =
BindableProperty.Create(nameof(IsHeaderVisible), typeof(bool), typeof(VirtualListView), true);

public IView GlobalFooter
{
get => (IView)GetValue(GlobalFooterProperty);
Expand All @@ -40,6 +49,15 @@ public IView GlobalFooter
BindableProperty.Create(nameof(GlobalFooter), typeof(IView), typeof(VirtualListView), default);


public bool IsFooterVisible
{
get => (bool)GetValue(IsFooterVisibleProperty);
set => SetValue(IsFooterVisibleProperty, value);
}

public static readonly BindableProperty IsFooterVisibleProperty =
BindableProperty.Create(nameof(IsFooterVisible), typeof(bool), typeof(VirtualListView), true);


public DataTemplate ItemTemplate
{
Expand Down
4 changes: 4 additions & 0 deletions VirtualListView/IVirtualListView.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,12 @@ public interface IVirtualListView : IView

IView Header { get; }

bool IsHeaderVisible { get; }

IView Footer { get; }

bool IsFooterVisible { get; }

event EventHandler<ScrolledEventArgs> OnScrolled;

void Scrolled(double x, double y);
Expand Down
10 changes: 8 additions & 2 deletions VirtualListView/PositionalViewSelector.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,14 @@ internal class PositionalViewSelector
public readonly IVirtualListView VirtualListView;
public IVirtualListViewAdapter Adapter => VirtualListView?.Adapter;
public IVirtualListViewSelector ViewSelector => VirtualListView?.ViewSelector;
public bool HasGlobalHeader => (VirtualListView?.Header?.Visibility ?? Visibility.Collapsed) == Visibility.Visible;
public bool HasGlobalFooter => (VirtualListView?.Footer?.Visibility ?? Visibility.Collapsed) == Visibility.Visible;

public bool HasGlobalHeader =>
(VirtualListView?.IsHeaderVisible ?? false)
&& (VirtualListView?.Header?.Visibility ?? Visibility.Collapsed) == Visibility.Visible;

public bool HasGlobalFooter =>
(VirtualListView?.IsFooterVisible ?? false)
&& (VirtualListView?.Footer?.Visibility ?? Visibility.Collapsed) == Visibility.Visible;

public PositionalViewSelector(IVirtualListView virtualListView)
{
Expand Down
13 changes: 13 additions & 0 deletions VirtualListView/VirtualListViewHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@ public partial class VirtualListViewHandler
{
[nameof(IVirtualListView.Adapter)] = MapAdapter,
[nameof(IVirtualListView.Header)] = MapHeader,
[nameof(IVirtualListView.IsHeaderVisible)] = MapIsHeaderVisible,
[nameof(IVirtualListView.Footer)] = MapFooter,
[nameof(IVirtualListView.IsFooterVisible)] = MapIsFooterVisible,
[nameof(IVirtualListView.ViewSelector)] = MapViewSelector,
[nameof(IVirtualListView.SelectionMode)] = MapSelectionMode,
[nameof(IVirtualListView.Orientation)] = MapOrientation,
Expand Down Expand Up @@ -103,4 +105,15 @@ public static void MapSelectedItems(VirtualListViewHandler handler, IVirtualList
// Keep track of the new state for next time it changes
handler.previousSelections = newSelections.ToArray();
}

public static void MapIsHeaderVisible(VirtualListViewHandler handler, IVirtualListView virtualListView)
{
handler?.InvalidateData();
}

public static void MapIsFooterVisible(VirtualListViewHandler handler, IVirtualListView virtualListView)
{
handler?.InvalidateData();
}

}

0 comments on commit e3de814

Please sign in to comment.