Каков наилучший способ удалить тип объекта из выбора TreeView? - PullRequest
0 голосов
/ 03 апреля 2019

Я заполняю 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);
        }

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...