Поскольку вы упоминаете Prism, я предполагаю, что у вас есть контроллер или ViewModel, присоединенные к представлению, содержащему ваш TreeView ...
В таком случае предоставьте логическое свойство IsExpanded
private bool _isExpanded;
public bool IsExpanded
{
get { return _isExpanded; }
set
{
if (value != _isExpanded)
{
_isExpanded = value;
RaisePropertyChanged("IsExpanded");
// Apply custom logic here...
}
}
}
Теперь, чтобы подключить это свойство к TreeView, вам нужно применить следующий стиль в ресурсах TreeView (или далее, по мере необходимости, к дереву Visual)
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="{Binding Path=IsExpanded, Mode=TwoWay}" />
</Style>
Примечание: вы также можете использовать похожую технику для подключения свойства IsSelected - также очень полезно !!