Estoy escribiendo mi WPF ItemsControl personalizado para mostrar una lista de elementos. Los artículos se muestran incrustados dentro de un ScrollViewer:Cómo desplazar el contenido de WPF ScrollViewer a una ubicación específica
<Style TargetType="MyCustomItemsControl">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="MyCustomItemsControl">
<ScrollViewer x:Name="PART_MyScrollViewer" >
<ItemsPresenter/>
</ScrollViewer>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
quiero para asegurarse de que cuando muevo el ratón en el control, un elemento determinado (marcada como seleccionada) se desplazará a la posición del ratón. En mi método OnMouseEnter, puedo encontrar el artículo pero no sé qué hacer a continuación. ¿Alguien tiene alguna idea?
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;
}
}
}
¡Muchas gracias! Pasé un día entero con otras formas, pero finalmente tu solución me salvó ... realmente realmente aprecio mucho !!! –
Esto no hace realmente lo que solicitó el solicitante, ya que ignora completamente la posición del mouse, pero al menos pone el control a la vista en la pantalla (que en el 99% de los casos es toda persona que encuentra que esta pregunta es probable que necesitar). Entonces, ciertamente es una contribución valiosa. – jmbpiano
Esto encajaba mucho en mis necesidades, ¡gracias! –