【发布时间】:2012-04-03 19:15:29
【问题描述】:
我使用 ObservableCollection 作为我的 listBox 组件的 ItemSource:
但是控件的行为对我来说不合适。我已经向下滚动到我收藏中第一次出现的问题,但不是最后一次。
样本列表为:1,1,2,3,4,5,6,7,8,9,11,22,33,1
当您进入最后一个 1 时,您的组件向上滚动到第一个 1 :)。这不是我想要的。
请指教。这里是组件的代码:
public class MyListBox : ListBox
{
protected override void OnItemsChanged(System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
base.OnItemsChanged(e);
if (Items.Count > 0)
{
var item = Items[Items.Count - 1];
UpdateLayout();
ScrollIntoView(item);
UpdateLayout();
}
}
}
【问题讨论】:
-
你有 ObservableCollection
?如果您的最后一项是 33,它可以工作吗?如果是这样,正在做的是对 ListItems 进行相等比较。尝试 List 因为它的行为可能不同。如果不是,那么您需要绑定到您实现 GetHashCode 并覆盖 Equals 的自定义类,以便第一个 1 不等于最后一个 1。 -
是的,如果 33 这很好用,因为之前没有 33 在集合中。我必须使用 ObservableCollection 来满足数据源的变化。可惜完全绑定到自定义类:(
标签: wpf scroll listbox-control