Skip to content

Commit e3de814

Browse files
committed
Add properties to hide global header/footer
1 parent 23f83cc commit e3de814

4 files changed

Lines changed: 43 additions & 2 deletions

File tree

VirtualListView/Controls/VirtualListView.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,15 @@ public IView GlobalHeader
3030
public static readonly BindableProperty GlobalHeaderProperty =
3131
BindableProperty.Create(nameof(GlobalHeader), typeof(IView), typeof(VirtualListView), default);
3232

33+
public bool IsHeaderVisible
34+
{
35+
get => (bool)GetValue(IsHeaderVisibleProperty);
36+
set => SetValue(IsHeaderVisibleProperty, value);
37+
}
38+
39+
public static readonly BindableProperty IsHeaderVisibleProperty =
40+
BindableProperty.Create(nameof(IsHeaderVisible), typeof(bool), typeof(VirtualListView), true);
41+
3342
public IView GlobalFooter
3443
{
3544
get => (IView)GetValue(GlobalFooterProperty);
@@ -40,6 +49,15 @@ public IView GlobalFooter
4049
BindableProperty.Create(nameof(GlobalFooter), typeof(IView), typeof(VirtualListView), default);
4150

4251

52+
public bool IsFooterVisible
53+
{
54+
get => (bool)GetValue(IsFooterVisibleProperty);
55+
set => SetValue(IsFooterVisibleProperty, value);
56+
}
57+
58+
public static readonly BindableProperty IsFooterVisibleProperty =
59+
BindableProperty.Create(nameof(IsFooterVisible), typeof(bool), typeof(VirtualListView), true);
60+
4361

4462
public DataTemplate ItemTemplate
4563
{

VirtualListView/IVirtualListView.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,12 @@ public interface IVirtualListView : IView
1010

1111
IView Header { get; }
1212

13+
bool IsHeaderVisible { get; }
14+
1315
IView Footer { get; }
1416

17+
bool IsFooterVisible { get; }
18+
1519
event EventHandler<ScrolledEventArgs> OnScrolled;
1620

1721
void Scrolled(double x, double y);

VirtualListView/PositionalViewSelector.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,14 @@ internal class PositionalViewSelector
77
public readonly IVirtualListView VirtualListView;
88
public IVirtualListViewAdapter Adapter => VirtualListView?.Adapter;
99
public IVirtualListViewSelector ViewSelector => VirtualListView?.ViewSelector;
10-
public bool HasGlobalHeader => (VirtualListView?.Header?.Visibility ?? Visibility.Collapsed) == Visibility.Visible;
11-
public bool HasGlobalFooter => (VirtualListView?.Footer?.Visibility ?? Visibility.Collapsed) == Visibility.Visible;
10+
11+
public bool HasGlobalHeader =>
12+
(VirtualListView?.IsHeaderVisible ?? false)
13+
&& (VirtualListView?.Header?.Visibility ?? Visibility.Collapsed) == Visibility.Visible;
14+
15+
public bool HasGlobalFooter =>
16+
(VirtualListView?.IsFooterVisible ?? false)
17+
&& (VirtualListView?.Footer?.Visibility ?? Visibility.Collapsed) == Visibility.Visible;
1218

1319
public PositionalViewSelector(IVirtualListView virtualListView)
1420
{

VirtualListView/VirtualListViewHandler.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ public partial class VirtualListViewHandler
88
{
99
[nameof(IVirtualListView.Adapter)] = MapAdapter,
1010
[nameof(IVirtualListView.Header)] = MapHeader,
11+
[nameof(IVirtualListView.IsHeaderVisible)] = MapIsHeaderVisible,
1112
[nameof(IVirtualListView.Footer)] = MapFooter,
13+
[nameof(IVirtualListView.IsFooterVisible)] = MapIsFooterVisible,
1214
[nameof(IVirtualListView.ViewSelector)] = MapViewSelector,
1315
[nameof(IVirtualListView.SelectionMode)] = MapSelectionMode,
1416
[nameof(IVirtualListView.Orientation)] = MapOrientation,
@@ -103,4 +105,15 @@ public static void MapSelectedItems(VirtualListViewHandler handler, IVirtualList
103105
// Keep track of the new state for next time it changes
104106
handler.previousSelections = newSelections.ToArray();
105107
}
108+
109+
public static void MapIsHeaderVisible(VirtualListViewHandler handler, IVirtualListView virtualListView)
110+
{
111+
handler?.InvalidateData();
112+
}
113+
114+
public static void MapIsFooterVisible(VirtualListViewHandler handler, IVirtualListView virtualListView)
115+
{
116+
handler?.InvalidateData();
117+
}
118+
106119
}

0 commit comments

Comments
 (0)