Pregunta

Tengo el siguiente problema:

En My TreeView, agregué la funcionalidad sin selección llamando a mi propio deselecto ()-Método cuando el usuario hace clic en TreeView pero no un TreeViewitem. Aquí está mi método TreeView:

public void deselectAll()
{
    TreeViewItem item = SelectedItem as TreeViewItem;
    if (item != null)
    {
        this.Focus();
        item.IsSelected = false;
    }
}

Mi problema es que no puedo volver a seleccionar un TreeViewitem después de no seleccionarlo. He leído que enfocar la vista de árbol en sí debería resolver este problema, pero no lo es. Tampoco importa si pongo el 'foco ()' antes o después del 'isselected = false'.

¿Alguien tiene una idea de por qué esto no funciona? Cualquier pensamiento sería apreciado.

¿Fue útil?

Solución

Después de establecer item.isselected = false; Tienes que llamar .focus () para tu View de Tree.

        <TreeView MouseLeftButtonDown="TreeView_MouseLeftButtonDown">
            <TreeViewItem Header="Employee1">
                <TreeViewItem Header="Jesper"/>
                <TreeViewItem Header="Aaberg"/>
                <TreeViewItem Header="12345"/>
            </TreeViewItem>
            <TreeViewItem Header="Employee2">
                <TreeViewItem Header="Dominik"/>
                <TreeViewItem Header="Paiha"/>
                <TreeViewItem Header="98765"/>
            </TreeViewItem>
        </TreeView>

    private void TreeView_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        var tv = sender as TreeView;

        if (tv != null)
        {
            var item = (TreeViewItem)tv.SelectedItem;
            item.IsSelected = false;
            tv.Focus();
        }
    }

Escribiste Focus () No resuelvas tu problema. ¿A dónde llamas a tu deselección ()?

Como solución alternativa, puede usar el Mouseleftdown para establecer un elemento como se selecciona.

PD: No olvides marcar una respuesta como Anwser.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top