en la cuadrícula de datos wpf ¿cómo obtener la fila en blanco en la parte superior? es decir, cuando el usuario desea agregar una nueva fila, siempre aparece en la parte inferior. Pero quiero que esté en la cima ... ¿puedo hacer esto en XAML?en la cuadrícula de datos de wpf cómo obtener la fila en blanco en la parte superior?
Respuesta
Esta respuesta depende en gran medida de cómo esté vinculando su DataGrid, específicamente cuál es el tipo subyacente de su ItemsSource. Esta respuesta asume que está usando un ObservableCollection. Como mencionas específicamente WPF, también asumo que te refieres a .NET 4.0, ya que DataGrid solo está disponible en Silverlight 3 y .NET 4.0.
Asumo que son Newing una fila llamando
ItemSource.Add(new MyObject());
Para obtener el comportamiento que desea, utilice el siguiente lugar:
ItemSource.Insert(0, new MyObject());
Usted tendría que escribir su propia plantilla para DataGrid donde colocaría la parte NewItemPlaceholder en la parte superior de la grilla. Mire este example para empezar (aunque el ejemplo no es la respuesta, lo señalará en la dirección correcta).
En la nota lateral, ¿puedo preguntar por qué debería tener NewItemPlaceholder en la parte superior? De alguna manera rompe el flujo natural de arriba hacia abajo que estamos tan acostumbrados a ver cuando manejamos listas/grillas.
Puede ser más intuitivo tener la opción Nuevo elemento en la parte inferior e Insertar elemento en el menú contextual de la cuadrícula o algo así. Esa es solo mi opinión, por supuesto.
Si está utilizando un enfoque MMVM, se puede añadir una nueva fila gusta programáticamente:
var newEmp = new EmployeeViewModel(new EmployeeDto());
EmployeeList.Add(newEmp);
EmployeeList.Move(EmployeeList.IndexOf(newEmp), 0);
En mi ejemplo estoy usando un EmployeeListViewModel para mostrar una ObservableCollection de EmployeeViewModels.
Luego también puede escribir pruebas para este comportamiento. más control que en XAML ....
/Johan
+1 solución limpia –
¿Qué hay de NewItemPlaceholderPosition.AtBeginning? No tengo un ejemplo de código pero parece ser lo que estás describiendo. Siempre puedes hacer lo que Johan sugiere y mover u ordenar los elementos en la grilla programáticamente.
Ejemplo de código añadido por Ray Quemaduras:
var view = CollectionView.GetDefaultCollectionView(EmployeeList)
as IEditableCollectionView;
if(view!=null)
view.NewItemPlaceholderPosition = NewItemPlaceholderPosition.AtBeginning;
Tenga en cuenta que esto requiere NET Framework 3.5 o superior.
Excelente respuesta woodyiii (+1). Agregué un código y una nota sobre la versión de NET Framework para que tu respuesta sea aún mejor. –
.GetDefaultCollectionView no es un método en la clase CollectionView (4.0). ¿CollectionViewSource.GetDefaultView (object) es lo mismo? – Michael
@RayBurns Actualice el código con respecto a .NET Framework. El código no funciona para v4 y superior. –
- 1. Cómo quitar la fila predeterminada en la cuadrícula de datos Wpf
- 2. Cómo agregar fila en la parte superior de la trama de datos R
- 3. WPF DataGrid fila vacía en la parte inferior
- 4. WPF Tamaño de la cuadrícula
- 5. WPF DataGrid: Falta fila en blanco
- 6. prevención de cambio de fila en la cuadrícula de datos
- 7. Ordenar en varias columnas en la cuadrícula de datos WPF
- 8. Cómo actualizar la cuadrícula de datos en WPF
- 9. Cuadrícula de datos Establecer foco en la fila recién agregada
- 10. Asp.net - Agregue el elemento en blanco en la parte superior de la lista desplegable
- 11. Propietario de la ventana en WPF sin comportamiento siempre en la parte superior
- 12. Mantener diálogos en la parte superior de la ventana, pero no en la parte superior de todo
- 13. ¿Cómo desplazo una fila de cuadrícula en WPF/XAML?
- 14. ¿Qué control de cuadrícula/cuadrícula en WPF?
- 15. La ventana de la aplicación WPF aparece en la parte superior de SplashScreen
- 16. Programativamente trayendo una fila de cuadrícula de datos a la vista en WPF, MVVM
- 17. Enfrente de "siempre en la parte superior"
- 18. Alineación flotante CSS en la parte superior
- 19. Cómo dibujar la cuadrícula en WPF Canvas?
- 20. WPF cuadrícula de datos: En la carga, la selección de elemento actual (destacando)
- 21. En una cuadrícula de WPF, ¿cómo puedo encontrar la fila y la columna en la ubicación del mouse?
- 22. ¿Cómo agregar 20 píxeles de blanco en la parte superior de un archivo de imagen existente?
- 23. WPF El panel de diseño de cuadrícula con la altura de fila establecida en "Auto"
- 24. Obtener filas de la cuadrícula de datos
- 25. Cómo coloco un DataGridView en una fila específica (para que la fila seleccionada esté en la parte superior)
- 26. Cómo enlazar un comando al hacer doble clic en una fila en la cuadrícula de datos
- 27. Cómo mostrar una barra de progreso en la parte superior de un control en WPF
- 28. color de fondo en la parte superior (rebote) de UIWebView
- 29. eliminación de cabecera de la fila en la vista de cuadrícula de datos mediante programación
- 30. LINQ Únete en la parte superior 1
Ooh nice ... tiene una manera ... pero eso es simular el efecto de agregar fila ... tienes que escribir controladores de eventos y administrar todo ... puedo hacerlo y gracias por la sugerencia. estoy usando .net 3.5 datagrid ... creo que es beta y lo estoy haciendo exactamente como lo has mencionado .... alguna otra idea? – kedar
DataGrid está disponible para .NET 3.5 si instala WPF Toolkit, disponible en codeplex. – Dave