Domanda

Ho il seguente problema:

Nel mio TreeView ho aggiunto funzionalità non selezionate chiamando il mio deselect ()-Metodo quando l'utente fa clic su TreeView ma non un TreeViewItem. Ecco il mio metodo TreeView:

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

Il mio problema è che non riesco a riparare un TreeViewItem dopo averlo disastro. Ho letto, che focalizzare la stessa TreeView dovrebbe risolvere questo problema, ma non lo è. Inoltre, non importa se metto il "focus ()" prima o dopo il "ISSELECT = FALSE".

Qualcuno ha un'idea del motivo per cui non funziona? Ogni pensiero sarebbe apprezzato.

È stato utile?

Soluzione

Dopo aver impostato l'oggetto.isselected = false; Devi chiamare .Focus () per il tuo albero.

        <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();
        }
    }

Hai scritto focus () non risolvere il tuo problema. Dove chiami il tuo deselectall ()?

Come soluzione alternativa è possibile utilizzare il mouseleftdown per impostare un elemento come selezionato.

PS: non dimenticare di contrassegnare una risposta come anwser.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top