Skip to content

Instantly share code, notes, and snippets.

@Kinnara
Created November 28, 2014 06:15
Show Gist options
  • Save Kinnara/24b66b21c2d0ed0b9810 to your computer and use it in GitHub Desktop.
Save Kinnara/24b66b21c2d0ed0b9810 to your computer and use it in GitHub Desktop.
Fix ListView scrolling
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
}
@mztan
Copy link

mztan commented Dec 1, 2014

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!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment