Задать вопрос
@kolenchits86

Binding Selected TreeNode как это сделать при динамическом биндинге?

Здравствуйте!
весь вечер голову ломаю - не могу придмумать как забиндить выделенный сегмент TreeView переменной Mvvm

весь TreeView тут
<TreeView ItemsSource="{Binding Subunits}">
                <!-- Шаблон подразделения -->
                <TreeView.ItemTemplate>
                    <HierarchicalDataTemplate ItemsSource="{Binding Positions}">
                        <TextBlock Text="{Binding SubunitName}"/>
                        <!-- Шаблон должности -->
                        <HierarchicalDataTemplate.ItemTemplate>
                            <HierarchicalDataTemplate ItemsSource="{Binding Employees}" DataType="{x:Type local:Employee}">
                                <TextBlock Text="{Binding PositionName}"/>
                                <!-- Шаблон сотрудника -->
                                <HierarchicalDataTemplate.ItemTemplate>
                                    <DataTemplate>
                                        <StackPanel Orientation="Horizontal">                                                
                                            <TextBlock Text="{Binding FirstName}" Margin="0,0,5,0" MouseDown="qwe"/>
                                            <TextBlock Text="{Binding FirstName}" Margin="0,0,5,0"/>
                                            <TextBlock Text="{Binding Patronymic}" Margin="0,0,5,0"/>
                                        </StackPanel>
                                    </DataTemplate>
                                </HierarchicalDataTemplate.ItemTemplate>

                            </HierarchicalDataTemplate>
                        </HierarchicalDataTemplate.ItemTemplate>
                    </HierarchicalDataTemplate>
                </TreeView.ItemTemplate>
            </TreeView>


плюс сложность в том что каждый дочерний узел, экземпляр другого класса, чем родительский, но я думаю не проблема.
Просто не могу найти решение о том как на клик забиндить переменную HierarchicalDataTemplate
  • Вопрос задан
  • 3011 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@i_light
Backend, XAML, crossplatform
Задайте имя (например, MyControl) элементу с нужным контекстом (в вашем случае нужному HierarchicalDataTemplate) и связывайте через него с полем SelectedItem в модели

<Grid Name="LayoutRoot">
   <Grid.DataContext>
      <MyModel SelectedItem={Binding DataContext, ElementName=MyControl}>
   </Grid.DataContext>
...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Imagio
@Imagio
Турист, мотоциклист и программист
А если подписаться на событие TreeView.SelectedItemChanged:
private void TreeView_OnSelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
            selectedModel = e.NewValue;
}

А потом уже можно определять тип выбранного элемента.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы