public ProgScrollEventArgs : EventArgs
{
public int Index { get; init; }
public ProgScrollEventArgs(int index)
{
Index = index;
}
}
public MyCollectionView : CollectionView
{
public event EventHandler<ProgScrollEventArgs> ProgrammaticallyScrolled;
// New method to call
public void ScrollToIndex(int index)
{
// Relay call to base method
ScrollTo(index);
// Invoke separate event handler
ProgrammaticallyScrolled?.Invoke(this, new ProgScrollEventArgs(index));
}
}
1条答案
按热度按时间siv3szwd1#
首先,如果
CollectionView
正在以编程方式滚动,您应该知道,因为是您在做这件事。从您的问题中,我推断您试图在与所讨论的
CollectionView
没有直接联系的地方进行区分,可能是因为您试图将关注点分开。你可以做的一件事是子类化
CollectionView
, Package 对CollectionView.ScrollTo()
方法的调用,并调用一个单独的事件处理程序:然后,在XAML中的所有地方使用
MyCollectionView
类而不是CollectionView
,并订阅ProgrammaticallyScrolled
事件:在代码隐藏中,您将添加事件处理程序:
您需要使用新的
ScrollToIndex()
方法来进行编程滚动:或者,您也可以订阅代码隐藏中的事件: