¿Cómo se obtiene el nivel de un TreeViewItem en WPF C #?
-
02-10-2019 - |
Pregunta
¿Cómo se obtiene el nivel de un TreeViewItem en WPF C #? En formas de las ventanas hay un miembro de la clase .level vista de árbol, pero no parece ser uno de WPF C #.
Solución
Construir un modelo de vista.
A View modelo que gves una mayor flexibilidad con la vista de árbol que se puede lograr sin ella. Hágase un favor, no se echan el árbol visual, Si un nodo padre no es visible, podría ser virtualizado de distancia y su nivel (o profundidad) cifra será incorrecto. construir un modelo de vista que envuelve sus datos y sabe en qué nivel se encuentra en.
Vea las respuestas publicadas aquí.
respuesta del enlace Una (se añadiría otra propiedad a su vista de modelo - nivel)
Otros consejos
Lo hice con un convertidor porque quería hacerlo con <style>
<DataTrigger Binding="{Binding Parent, RelativeSource={RelativeSource Self}, Converter={StaticResource TreeViewItemConverter}}" Value="1">
<Setter TargetName="Bd" Property="Background" Value="Yellow"/>
</DataTrigger>
Y el convertidor
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if ((value as TreeView) != null)//level 1
return 0;
var item = (value as TreeViewItem);
if (item != null) // level 2 and 3
return (item.Parent as TreeViewItem)!=null ? 2 : 1;
return 0;
}
Esto es particularmente útil para el peinado multinivel en la vista de árbol