Skip to content

Commit e113a05

Browse files
Make HeaderElement a FrameworkElement as we pretty much needed it like that everywhere anyway...
1 parent 0c94a78 commit e113a05

File tree

2 files changed

+13
-17
lines changed

2 files changed

+13
-17
lines changed

components/Behaviors/src/Headers/HeaderBehaviorBase.cs

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,17 @@ public abstract class HeaderBehaviorBase : BehaviorBase<FrameworkElement>
3030
/// <remarks>
3131
/// Set this using the header of a ListView or GridView.
3232
/// </remarks>
33-
public UIElement HeaderElement
33+
public FrameworkElement HeaderElement
3434
{
35-
get { return (UIElement)GetValue(HeaderElementProperty); }
35+
get { return (FrameworkElement)GetValue(HeaderElementProperty); }
3636
set { SetValue(HeaderElementProperty, value); }
3737
}
3838

3939
/// <summary>
4040
/// Defines the Dependency Property for the <see cref="HeaderElement"/> property.
4141
/// </summary>
4242
public static readonly DependencyProperty HeaderElementProperty = DependencyProperty.Register(
43-
nameof(HeaderElement), typeof(UIElement), typeof(HeaderBehaviorBase), new PropertyMetadata(null, PropertyChangedCallback));
43+
nameof(HeaderElement), typeof(FrameworkElement), typeof(HeaderBehaviorBase), new PropertyMetadata(null, PropertyChangedCallback));
4444

4545
/// <summary>
4646
/// If any of the properties are changed then the animation is automatically started.
@@ -127,18 +127,17 @@ protected virtual bool AssignAnimation()
127127
// Implicit operation: Find the Header object of the control if it uses ListViewBase
128128
if (HeaderElement == null && listView != null)
129129
{
130-
HeaderElement = (listView.Header as UIElement)!;
130+
HeaderElement = (listView.Header as FrameworkElement)!;
131131
}
132132

133-
var headerElement = HeaderElement as FrameworkElement;
134-
if (headerElement == null || headerElement.RenderSize.Height == 0)
133+
if (HeaderElement == null || HeaderElement.RenderSize.Height == 0)
135134
{
136135
return false;
137136
}
138137

139138
if (_headerVisual == null)
140139
{
141-
_headerVisual = ElementCompositionPreview.GetElementVisual(headerElement);
140+
_headerVisual = ElementCompositionPreview.GetElementVisual(HeaderElement);
142141
}
143142

144143
if (_headerVisual == null)
@@ -147,8 +146,8 @@ protected virtual bool AssignAnimation()
147146
}
148147

149148
// TODO: Not sure if we need to provide an option to turn these events off, as FadeHeaderBehavior didn't use these two, unlike QuickReturn/Sticky did...
150-
headerElement.SizeChanged -= ScrollHeader_SizeChanged;
151-
headerElement.SizeChanged += ScrollHeader_SizeChanged;
149+
HeaderElement.SizeChanged -= ScrollHeader_SizeChanged;
150+
HeaderElement.SizeChanged += ScrollHeader_SizeChanged;
152151

153152
_scrollViewer.GotFocus -= ScrollViewer_GotFocus;
154153
_scrollViewer.GotFocus += ScrollViewer_GotFocus;
@@ -178,9 +177,9 @@ protected virtual void RemoveAnimation()
178177
_scrollViewer.GotFocus -= ScrollViewer_GotFocus;
179178
}
180179

181-
if (HeaderElement is FrameworkElement element)
180+
if (HeaderElement != null)
182181
{
183-
element.SizeChanged -= ScrollHeader_SizeChanged;
182+
HeaderElement.SizeChanged -= ScrollHeader_SizeChanged;
184183
}
185184

186185
StopAnimation();
@@ -209,13 +208,11 @@ private void ScrollViewer_GotFocus(object sender, RoutedEventArgs e)
209208
// Popups have no parents, whereas a normal Item would have the ListView as a parent.
210209
if (focusedElement is UIElement element && VisualTreeHelper.GetParent(element) != null)
211210
{
212-
FrameworkElement header = (FrameworkElement)HeaderElement;
213-
214211
var point = element.TransformToVisual(scroller).TransformPoint(new Point(0, 0));
215212

216-
if (point.Y < header.ActualHeight)
213+
if (point.Y < HeaderElement.ActualHeight)
217214
{
218-
scroller.ChangeView(0, scroller.VerticalOffset - (header.ActualHeight - point.Y), 1, false);
215+
scroller.ChangeView(0, scroller.VerticalOffset - (HeaderElement.ActualHeight - point.Y), 1, false);
219216
}
220217
}
221218
}

components/Behaviors/src/Headers/QuickReturnHeaderBehavior.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,7 @@ private void ScrollViewer_ViewChanged(object? sender, ScrollViewerViewChangedEve
9090
{
9191
if (_animationProperties != null && _scrollViewer != null)
9292
{
93-
FrameworkElement header = (FrameworkElement)HeaderElement;
94-
var headerHeight = header.ActualHeight;
93+
var headerHeight = HeaderElement.ActualHeight;
9594
if (_headerPosition + headerHeight < _scrollViewer.VerticalOffset)
9695
{
9796
// scrolling down: move header down, so it is just above screen

0 commit comments

Comments
 (0)