如何将WPF ScrollViewer的内容滚动到特定位置
||
我正在编写自定义WPF ItemsControl以显示项目列表。这些项目显示为嵌入ScrollViewer内部:
<Style TargetType=\"MyCustomItemsControl\">
<Setter Property=\"Template\">
<Setter.Value>
<ControlTemplate TargetType=\"MyCustomItemsControl\">
<ScrollViewer x:Name=\"PART_MyScrollViewer\" >
<ItemsPresenter/>
</ScrollViewer>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我想确保当我将鼠标移到控件中时,特定项目(标记为选中)将滚动到鼠标位置。在我的OnMouseEnter方法中,我可以找到该项目,但是我不知道下一步该怎么做。有人有什么主意吗?
protected override void OnMouseEnter(MouseEventArgs e)
{
for (int i = 0; i < Items.Count; i++)
{
ContentPresenter uiElement = (ContentPresenter)ItemContainerGenerator.ContainerFromIndex(i);
var item = uiElement.Content as MyCustomObject;
if (item.IsSelected)
{
// How to scroll the uiElement to the mouse position?
break;
}
}
}
没有找到相关结果
已邀请:
4 个回复
物崎巩
队辅坟阮阶
参考:https://msdn.microsoft.com/zh-cn/library/ms598110.aspx 更新:(由于@jmbpiano)请注意,它不能将控件完全移到当前鼠标光标位置。它只是将控件移到可见位置,操作员可以在其中单击鼠标(在99%的情况下,发现这个问题的人可能都需要使用该控件)。
坍锭嘉韭蓝
场竟矩喘崩