C# WPF Material Design - TreeView Ausgewähltes Item erhalten?
Ich habe mir mit dem Style von MaterialDesign ein TreeView in WPF erstellt.
Dort habe ich eine Liste, die wie folgt aufgebaut ist:
<TreeView x:Name="TreeView" Width="175">
<TreeViewItem x:Name="TreeView_1" Header="1" IsExpanded="False"></TreeViewItem>
<TreeViewItem x:Name="TreeView_2" Header="2" IsExpanded="False"></TreeViewItem>
<TreeViewItem x:Name="TreeView_3" Header="3" IsExpanded="False"></TreeViewItem>
</TreeView>
Im Laufe der Zeit werden 1-3 Unterpunkte hinzugefügt.
Wie kann ich denn diese nun abfangen, sodass ich beispielsweise den Namen bekomme?
Ich habe schon gegoogled, konnte aber nichts brauchbares finden.
1 Antwort
Die Informationen, die du benötigst, findest du in der Dokumentation. So gibt es diese zwei Properties:
Dein TreeView solltest du allerdings eher an eine ItemsSource hängen.
Ein einfaches Beispiel:
XAML:
<!-- window ... -->
<Window.DataContext>
<local:ViewModel />
</Window.DataContext>
<Grid>
<TreeView ItemsSource="{Binding Persons}">
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="False" />
<Setter Property="Header" Value="{Binding Name}" />
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
</Grid>
<!-- close window ... -->
ViewModel-Klasse:
public class ViewModel
{
public ViewModel()
{
Persons = new ObservableCollection<Person>
{
new Person { Name = "Paul Panther" },
new Person { Name = "Donald Duck" },
new Person { Name = "Alfons Zitterbacke" }
};
}
public ObservableCollection<Person> Persons { get; set; }
}
Person-Klasse:
public class Person
{
public string Name { get; set; }
}
Folgend werden neue Einträge an Persons gehängt:
Persons.Add(new Person { Name = "Alfred J. Kwak" });
Das View aktualisiert sich automatisch.
Wenn sich der Selektionsstatus eines Items verändert, kann man darauf ebenfalls mit einem Binding reagieren (ein Beispiel findest du hier).