В Заводском TreeView нет возможности прибиндиться к выделенному узлу. Проблема решается созданием своего контролла, унаследованного от стандартного дерева. Создаем новый класс и вставляем туда код:
using System.Windows;
using System.Windows.Controls;
namespace OrgInfoSystemFW.View
{
class ExtendedTreeView : TreeView
{
public ExtendedTreeView()
: base()
{
this.SelectedItemChanged += new RoutedPropertyChangedEventHandler<object>(___ICH);
}
void ___ICH(object sender, RoutedPropertyChangedEventArgs<object> e)
{
if (SelectedItem != null)
{
SetValue(SelectedItem_Property, SelectedItem);
}
}
public object SelectedItem_
{
get { return (object)GetValue(SelectedItem_Property); }
set { SetValue(SelectedItem_Property, value); }
}
public static readonly DependencyProperty SelectedItem_Property = DependencyProperty.Register("SelectedItem_", typeof(object), typeof(ExtendedTreeView), new UIPropertyMetadata(null));
}
}
Заполенение дерева (заводское так же заполняется):
<!--Дерево департаментов-->
<local:ExtendedTreeView Grid.Row="1" Grid.Column="0"
x:Name="DepartamensTree"
ItemsSource="{Binding Deps}"
SelectedItem_="{Binding SelectedDepartament, Mode=TwoWay}"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.CanContentScroll="True">
<local:ExtendedTreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding SubDepartaments}">
<TextBlock Text="{Binding Path=Title}"/>
</HierarchicalDataTemplate>
</local:ExtendedTreeView.ItemTemplate>
</local:ExtendedTreeView>
Чтобы получить доступ к выделенному элементу из кода XAML, нужно совершить биндинг:
ItemsSource="{Binding ElementName=DepartamensTree, Path=SelectedValue.Employees}">