Si no quiere la selección definitivamente iría con ItemsControl no ListBox. La virtualización y el desplazamiento se pueden usar con un ItemsControl simple siempre que estén en la plantilla.
Por otro lado, si lo que necesita la selección, pero simplemente no desea que el botón derecho del ratón para seleccionar la forma más sencilla es probablemente para controlar el evento PreviewRightMouseButtonDown:
void ListBox_PreviewRightMouseButtonDown(object sender, MouseButtonEventArgs e)
{
e.Handled = true;
}
La razón por la que esto funciona es que ListBoxItem la selección ocurre en el mouse abajo pero la apertura del menú contextual ocurre en el mouse hasta. Por lo tanto, eliminar el evento del mouse hacia abajo durante la fase de vista previa resuelve su problema.
Sin embargo, esto no funciona si desea que el mouse hacia abajo se maneje en otro lugar dentro de su ListBox (como en un control dentro de un elemento). En este caso, la forma más fácil es, probablemente, a la subclase ListBoxItem ignorarlo:
public class ListBoxItemNoRightClickSelect : ListBoxItem
{
protected override void OnMouseRightButtonDown(MouseButtonEventArgs e)
{
}
}
Usted puede construir de forma explícita estos ListBoxItems en su ItemsSource o puede también ListBox subclase de utilizar sus artículos personalizados de forma automática:
public class ListBoxNoRightClickSelect : ListBox
{
protected override DependencyObject GetContainerForItemOverride()
{
return new ListBoxItemNoRightClickSelect();
}
}
FYI, aquí hay algunas soluciones que no funcionan junto con las explicaciones de por qué no funcionará:
- no se puede simplemente agregar un controlador MouseRightButtonDown en cada ListaB oxItem porque el controlador de clase registrados se llamará antes que la suya
- Usted no puede manejar MouseRightButtonDown en ListBox ya que el evento se dirige directamente a cada control individualmente
Gracias - Terminé yendo la ruta ItemsControl, (implementado como aquí http://stackoverflow.com/questions/2783845/wpf-virtualizing-an-itemscontrol) y no solo ahora funciona como me gustaría, ¡el rendimiento aumentó notablemente también! – devios1