Как развернуть узел в древовидной структуре с помощью MVVM?
У меня есть древовидное представление уровня x, и я создал свой собственный класс, чтобы связать его с элементом управления TreeView.
Мне удалось установить для свойства IsSelected
значение true
при создании списка TreeView
.
Поэтому мне просто нужно привязать мое значение IsSelected
к свойству TreeViewItem
IsSelected
, но это не так просто ...
Вот мой класс:
public class HierarchicalItem : Model
{
public string Name { get; set; }
public int Id { get; set; }
private bool _IsSelected;
public bool IsSelected
{
get { return _IsSelected; }
set
{
if (_IsSelected != value)
{
_IsSelected = value;
RaisePropertyChanged("IsSelected");
}
}
}
private ObservableCollection<HierarchicalItem> _children;
public ObservableCollection<HierarchicalItem> Children
{
get
{
return _children;
}
set
{
if (_children != value)
{
_children = value;
RaisePropertyChanged("Children");
}
}
}
}
Я пробовал это с IsSelected
и IsExpanded
:
<controls:TreeView.ItemContainerStyle>
<Style TargetType="controls:TreeViewItem">
<Setter Property="IsSelected" Value="{Binding IsSelected}" />
</Style>
</controls:TreeView.ItemContainerStyle>
Но возвращается, что IsSelected
и IsExpanded
только для чтения (это работает в WPF).
Я искал много решений для этого, но ни одно из них не работает для меня, потому что у меня есть динамические древовидные представления в списке и в каждом из древовидных представлений мне нужно развернуть весь путь до узла, который имеет данный Id
. Например, я хочу развернуть все узлы с Id = 30 в каждом древовидном списке.