【发布时间】:2019-07-02 17:23:24
【问题描述】:
我正在编写我的自定义 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;
}
}
}
【问题讨论】:
标签: wpf mouse position scrollviewer