Все
Прокручивая ListBox до вершины, если я все еще держу свой ладонь, список будет сжат бит liitle, но он будет отскакивать назад, как обычно, когда я отпустил кран. Можно ли каким-либо образом обнаружить это поведение?
В настоящее время я использую этот код, чтобы поймать событие прокрутки, но пока список достиг вершины или конца, значения всегда будут равны 0 или как высота списка, даже если я сделаю жест, как описано выше.
void PageLoaded(object sender, RoutedEventArgs e)
{
List scrollBarList = GetVisualChildCollection(listBox1);
foreach (ScrollBar scrollBar in scrollBarList)
{
if (scrollBar.Orientation == System.Windows.Controls.Orientation.Horizontal)
{
scrollBar.ValueChanged += new RoutedPropertyChangedEventHandler(horizontalScrollBar_ValueChanged);
}
else
{
scrollBar.ValueChanged += new RoutedPropertyChangedEventHandler(verticalScrollBar_ValueChanged);
}
}
}
private void horizontalScrollBar_ValueChanged(object sender, RoutedEventArgs e)
{
}
private void verticalScrollBar_ValueChanged(object sender, RoutedEventArgs e)
{
ScrollBar scrollBar = (ScrollBar)sender;
object valueObj = scrollBar.GetValue(ScrollBar.ValueProperty);
object maxObj = scrollBar.GetValue(ScrollBar.MaximumProperty);
if (valueObj != null && maxObj !=null)
{
double value = (double)valueObj;
double max = (double)maxObj;
System.Diagnostics.Debug.WriteLine(value);
System.Diagnostics.Debug.WriteLine(max);
}
}
void btnDelete_Click(object sender, EventArgs e)
{
((ObservableCollection)listBox1.ItemsSource).Remove("hello1");
listBox1.ScrollIntoView(listBox1.Items[listBox1.Items.Count()-1]);
}
public static List GetVisualChildCollection(object parent) where T : UIElement
{
List visualCollection = new List();
GetVisualChildCollection(parent as DependencyObject, visualCollection);
return visualCollection;
}
private static void GetVisualChildCollection(DependencyObject parent, List visualCollection) where T : UIElement
{
int count = VisualTreeHelper.GetChildrenCount(parent);
for (int i = 0; i < count; i++)
{
DependencyObject child = VisualTreeHelper.GetChild(parent, i);
if (child is T)
{
visualCollection.Add(child as T);
}
else if (child != null)
{
GetVisualChildCollection(child, visualCollection);
}
}
}