我正在編寫我的自定義WPF ItemsControl以顯示項目列表。該項目顯示嵌入的ScrollViewer內:如何將WPF 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;
}
}
}
非常感謝!我用其他方式度過了一整天,但最後你的解決方案救了我..真的非常感謝這麼多! – 2016-05-27 09:42:39
這實際上並沒有實現提問者的要求,因爲它完全忽略了鼠標的位置,但它至少將屏幕上的控件顯示在屏幕上(在99%的案例中,所有發現此問題的人都可能需要)。所以這當然是一個寶貴的貢獻。 – jmbpiano 2016-10-20 21:00:24
這非常符合我的需求,謝謝! – 2017-07-16 11:24:38