Created
November 28, 2014 06:15
-
-
Save Kinnara/24b66b21c2d0ed0b9810 to your computer and use it in GitHub Desktop.
Fix ListView scrolling
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public static class ListViewHelper | |
{ | |
#region SetFixedWidthOnItemsPanel | |
public static bool GetSetFixedWidthOnItemsPanel(ListView element) | |
{ | |
return (bool)element.GetValue(SetFixedWidthOnItemsPanelProperty); | |
} | |
public static void SetSetFixedWidthOnItemsPanel(ListView element, bool value) | |
{ | |
element.SetValue(SetFixedWidthOnItemsPanelProperty, value); | |
} | |
public static readonly DependencyProperty SetFixedWidthOnItemsPanelProperty = DependencyProperty.RegisterAttached( | |
"SetFixedWidthOnItemsPanel", | |
typeof(bool), | |
typeof(ListViewHelper), | |
new PropertyMetadata(false, OnSetFixedWidthOnItemsPanelChanged)); | |
private static void OnSetFixedWidthOnItemsPanelChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) | |
{ | |
var element = (ListView)d; | |
var oldValue = (bool)e.OldValue; | |
var newValue = (bool)e.NewValue; | |
if (oldValue) | |
{ | |
element.SizeChanged -= OnListViewSizeChanged; | |
} | |
if (newValue) | |
{ | |
element.SizeChanged += OnListViewSizeChanged; | |
} | |
} | |
private static void OnListViewSizeChanged(object sender, SizeChangedEventArgs e) | |
{ | |
var listView = (ListView)sender; | |
var itemsStackPanel = listView.ItemsPanelRoot as ItemsStackPanel; | |
if (itemsStackPanel != null) | |
{ | |
itemsStackPanel.Width = e.NewSize.Width; | |
} | |
} | |
#endregion | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi, I'm curious as to why this bit of code is needed. Is this to resolve the issue where the ListView can kind of scroll a little bit horizontally even though its HorizontalScrollMode has been disabled? (I've noticed this type of problem in my WP (Runtime 8.1) app.) Or is it to resolve an entirely different issue? Thanks!