Я заполняю TreeView объектами разных типов.В зависимости от того, какой элемент был выбран, мне нужно установить одно или другое свойство в модели представления.
Я пытался перехватить выделение в событии SelectedItemChanged, но я не увидел желаемого результата.
Чтобы выполнить тест, я создал 3 разных класса:
public class Cuadro
{
public string Nombre { get; set; }
public List<Circuito> Circuitos { get; set; }
}
public class Circuito
{
public string NombreCircuito { get; set; }
public List<Camino> Caminos { get; set; }
}
public class Camino
{
public string Ruta { get; set; }
}
И я заполняю древовидное представление вручную:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
List<Cuadro> cuadros = new List<Cuadro>();
for(int i = 0; i < 10; i++)
{
Cuadro cuadro = new Cuadro();
cuadro.Nombre = $"Cuadro {i}";
cuadro.Circuitos = new List<Circuito>();
for(int j = 0; j < 5; j++)
{
Circuito circuito = new Circuito();
circuito.NombreCircuito = $"Circuito {i}.{j}";
circuito.Caminos = new List<Camino>();
for(int k = 0; k < 3; k++)
{
Camino camino = new Camino();
camino.Ruta = $"Camino {i}.{j}.{k}";
circuito.Caminos.Add(camino);
}
cuadro.Circuitos.Add(circuito);
}
cuadros.Add(cuadro);
}
foreach (Cuadro cuadro in cuadros)
{
TreeViewItem cuadroItem = new TreeViewItem();
cuadroItem.Header = cuadro.Nombre;
foreach (Circuito circuito in cuadro.Circuitos)
{
TreeViewItem circuitoItem = new TreeViewItem();
circuitoItem.Header = circuito.NombreCircuito;
foreach (Camino camino in circuito.Caminos)
{
TreeViewItem caminoItem = new TreeViewItem();
caminoItem.Header = camino.Ruta;
circuitoItem.Items.Add(caminoItem);
}
cuadroItem.Items.Add(circuitoItem);
}
Arbol.Items.Add(cuadroItem);
}
}