Category / Section
How to expand selected TreeViewItemAdv on Button Click?
1 min read
Setting IsExpanded property
You can expand TreeViewItemAdv by using IsExpanded property. The following code example explains how to expand the selected item using the property IsExpanded on Button click. By Default, the IsExpanded property is set to False.
XAML
<syncfusion:TreeViewAdv ItemsSource="{Binding TreeItems}" x:Name="mainTreeview"> <syncfusion:TreeViewAdv.ItemContainerStyle> <Style TargetType="{x:Type syncfusion:TreeViewItemAdv}"> <Setter Property="IsExpanded" Value="{Binding IsExpanded,UpdateSourceTrigger=PropertyChanged}"/> </Style> </syncfusion:TreeViewAdv.ItemContainerStyle> <syncfusion:TreeViewAdv.ItemTemplate > <HierarchicalDataTemplate ItemsSource="{Binding SubItems}" > <StackPanel Orientation="Horizontal"> <ContentPresenter Content="{Binding Header}" /> </StackPanel> </HierarchicalDataTemplate> </syncfusion:TreeViewAdv.ItemTemplate> </syncfusion:TreeViewAdv> <Button Content="Expand Selected Item" Width="200" Click="Button_Click" Height="30" Grid.Column="1" VerticalAlignment="Center"/>
C#
Class: MainWindow.cs public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); this.DataContext = new ViewModel(); } private void Button_Click(object sender, RoutedEventArgs e) { if (mainTreeview.SelectedItem != null) { if (mainTreeview.SelectedItem is TreeViewItemAdv) { (mainTreeview.SelectedItem as TreeViewItemAdv).IsExpanded = true; } else { if (mainTreeview.SelectedItem is Model) { (mainTreeview.SelectedItem as Model).IsExpanded = true; } } } else { MessageBox.Show("Before click Button select any one TreeViewitem"); } } } Class: ViewModel public class ViewModel { public ViewModel() { TreeItems = new ObservableCollection<Model>(); PopulateData(); } public ObservableCollection<Model> TreeItems { get; set; } //Root Node private void PopulateData() { for (int i = 0; i < 6; i++) { Model Root1 = new Model() { Header = "Root" + i }; PopulateSubItems(Root1); TreeItems.Add(Root1); } } //Sub Node private void PopulateSubItems(Model Root) { for (int i = 1; i <= 1; i++) { Model SubItem1 = new Model() { Header = Root.Header + " Item" + i }; Root.SubItems.Add(SubItem1); } } } Class: Model public class Model:INotifyPropertyChanged { public Model() { SubItems = new ObservableCollection<Model>(); } private string _header; public string Header { get { return _header; } set { _header = value; raisepropertychanged("Header"); } } private bool _isExpanded; public bool IsExpanded { get { return _isExpanded; } set { _isExpanded = value; raisepropertychanged("IsExpanded"); } } public ObservableCollection<Model> SubItems { get; set; } #region INotifyPropertyChanged Members public event PropertyChangedEventHandler PropertyChanged; public void raisepropertychanged(string name) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(name)); } } #endregion }