3 Stimmen

Wie man das Treeview-Collapse-Ereignis nach einem Mausklick stoppt

Wie kann ich das Zusammenklappen des Treeview nach dem Mausklick auf den TreeViewItem-Pfeil (in der Ansicht) stoppen? Ich möchte meinen Treeview die ganze Zeit erweitert anzeigen.

4voto

pistipanko Punkte 725

Sie könnten das Collapsed-Ereignis in XAML festlegen:

                    <Setter Property="IsExpanded" Value="True" />
                    <Style.Triggers>
                        <EventTrigger RoutedEvent="Collapsed">
                            <EventTrigger.Actions>
                                <BeginStoryboard>
                                    <Storyboard>
                                        <BooleanAnimationUsingKeyFrames 
                                            Duration="0" 
                                            Storyboard.TargetProperty="(TreeViewItem.IsExpanded)">
                                            <DiscreteBooleanKeyFrame KeyTime="0" Value="True" />
                                        </BooleanAnimationUsingKeyFrames>
                                    </Storyboard>
                                </BeginStoryboard>
                            </EventTrigger.Actions>
                        </EventTrigger>
                    </Style.Triggers>

1voto

Eirik Punkte 4005

Sie können das Collapsed-Ereignis des TreeViewItems auf folgende Weise festlegen:

private void TreeViewItem_Collapsed(object sender, RoutedEventArgs e)
{
    (sender as TreeViewItem).IsExpanded = true;
}

Es verhindert jedoch nicht das Zusammenklappen, sondern erweitert es automatisch, wenn es zusammenklappt.

0voto

H.B. Punkte 140726

Einfach das Template neu erstellen für die TreeViewItems, damit sie nicht einmal einen Pfeil haben (und keinen ausklappbaren Bereich).

z.B.

    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="TreeViewItem">
                <StackPanel>
                    <ContentPresenter ContentSource="Header"/>
                    <ItemsPresenter Margin="20,0,0,0"/>
                </StackPanel>
            </ControlTemplate>
        </Setter.Value>
    </Setter>

(Das ist das absolute Minimum, du wirst Triggers haben wollen, um die aktuelle Auswahl anzuzeigen, falls du das brauchst)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X