Я использую TreeView с HierarchicalDataTemplate, но не могу заставить свойство IsExpanded работать для более высоких уровней, чем первый. Вот мой xaml:
<TreeView>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Text}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
В моем ResourceDictionary у меня есть:
<Style TargetType="TreeViewItem">
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
</Style>
что заставляет работать первый заказ.
В более высоких уровнях отступа IsExpanded всегда ложно, потому что PropertyChangedEventHandler не запускается для детей.
Вот мой класс:
public class ListItem : INotifyPropertyChanged
{
private bool isExpanded;
public bool IsExpanded
{
get { return isExpanded; }
set
{
if (isExpanded != value)
{
isExpanded = value;
SendPropertyChanged("IsExpanded");
}
}
}
private void SendPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
public event PropertyChangedEventHandler PropertyChanged;
public ObservableCollection<ListItem> Children { get; set; }
...
}
РЕДАКТИРОВАТЬ: Мне очень жаль, мой исправленный код работает!