En un WinForms aplicación, el nivel de un treeview
está dada por node.level
¿Cuál es el comando correspondiente en WPF?el nivel de una vista de árbol en WPF?
Respuesta
La respuesta directa a su pregunta es que no hay propiedades de nivel en WPF.
No existe una relación de uno a uno entre los controles de winforms y el control de wpf. Porque la arquitectura y el uso subyacentes son totalmente diferentes en ambos. En WPF va a encuadernar un conjunto de datos jerárquica (LinkedList tipo de estructura de datos) a un TreeView y definir un HeirarchicalDataTemplate a la propiedad Treeview.ItemTemplate
Dada la Consulta: -
así que cuando hago clic en un nodo, cómo ¿sé qué nivel es? ¿hay solución?
He aquí una posible solución: -
Si usted tiene una referencia a un control en el Visual árbol, posiblemente de un evento Click
continuación, puede utilizar ese control de averiguar qué nivel se encuentra en la vista de árbol llamando a una función como esta, que he usado en el pasado.
private int FindTreeLevel(DependencyObject control)
{
var level = -1;
if (control != null)
{
var parent = VisualTreeHelper.GetParent(control);
while (!(parent is TreeView) && (parent != null))
{
if (parent is TreeViewItem)
level++;
parent = VisualTreeHelper.GetParent(parent);
}
}
return level;
}
Este método va a subir por la VisualTree y contar cuántas TreeViewItem
controles que encuentra antes de parar cuando encuentre el control TreeView
.
Si necesita esta disponible en XAML, por ejemplo, un DataTrigger
de un HierarchicalDataTemplate
entonces usted podría paquete de esto en una clase de IValueConverter
<Window.Resources>
<local:TreeLevelConverter x:Key="treeLevelConverter"/>
<HierarchicalDataTemplate DataType="{x:Type local:MyType}" >
...
<Grid ... >
<TextBlock x:Name="MyControl" ... />
...
</Grid>
<HierarchicalDataTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Converter={StaticResource treeLevelConverter}}" Value="0" >
<Setter TargetName="MyControl" Property="Background" Value="Red"/>
</DataTrigger>
</HierarchicalDataTemplate.Triggers>
</HierarchicalDataTemplate>
</Window.Resources>
A continuación, utilice el siguiente convertidor
public class TreeLevelConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var level = -1;
if (value is DependencyObject)
{
var parent = VisualTreeHelper.GetParent(value as DependencyObject);
while (!(parent is TreeView) && (parent != null))
{
if (parent is TreeViewItem)
level++;
parent = VisualTreeHelper.GetParent(parent);
}
}
return level;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new System.NotImplementedException();
}
}
- 1. Agrupación de datos en vista de árbol de WPF
- 2. vista en árbol AutoExpand en WPF
- 3. WPF Vista en árbol con columnas de ancho fijo
- 4. vista de árbol de unión múltiple en WPF
- 5. Vista de árbol de varias columnas en WPF
- 6. ¿Cómo expandir todos los nodos de una vista de árbol de WPF en el código?
- 7. obtener el nodo desplegable en una vista en árbol
- 8. Alternativas de vista en árbol
- 9. DataGrid que también admite una vista en árbol
- 10. Configuración de desencadenantes de vista de árbol de WPF para mostrar diferentes imágenes en expandir
- 11. Vista de árbol lenta en C#
- 12. ¿Cómo revertir una vista de árbol disperso en modo org?
- 13. ¿Cómo crear una vista de árbol en Android?
- 14. poblar vista de árbol de una lista de ruta
- 15. ¿Cómo deseleccionar todos los elementos seleccionados en una vista de árbol de WPF al hacer clic en algún área vacía?
- 16. Rellenar una vista de árbol con un directorio de cadena
- 17. Vista de árbol WPF: ¿cómo implementar la navegación por teclado como en Explorer?
- 18. Travesía de orden de nivel de árbol binario
- 19. WPF - Vista de lista con el botón
- 20. Recorrido de orden de nivel de un árbol binario
- 21. vista de árbol jQuery con ordenable
- 22. Alternativas a la vista de árbol
- 23. Enlace jerárquico xml a vista de árbol
- 24. Equivalente a una propiedad de vista de clave en WPF
- 25. PRISM WPF: la navegación crea una nueva vista cada vez
- 26. Cómo obtener el nivel de celda ComboBox para WPF DataGrid?
- 27. ¿Cómo imprimiría los datos en un árbol binario, nivel por nivel, comenzando en la parte superior?
- 28. Controladores vs. Vista de nivel de aplicación en Backbone.js
- 29. Teclas de acceso directo a nivel de aplicación en WPF
- 30. Vista de colección paginada en WPF