Привязать TreeViewItem к свойству объекта - PullRequest
0 голосов
/ 23 августа 2011

У меня есть элемент управления TreeView с такими привязками:

<TreeView ItemsSource="{Binding}">
<TreeView.Resources>
  <HierarchicalDataTemplate DataType="{x:Type Trees:ItemTreeNode}"
                            ItemsSource="{Binding Path=Children}">
    <StackPanel Orientation="Horizontal" Tag="">
      <Image VerticalAlignment="Center" Margin="0,0,4,0" Source="{Binding Path=Icon}" />
      <TextBlock VerticalAlignment="Center" Text="{Binding Path=Text}" />
    </StackPanel>
  </HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>

А у меня следующий класс:

public class ItemTreeNode : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;
    public ObservableCollection<ItemTreeNode> Children { get; set; }

    public ImageSource Icon {get; set;}
    public string Text {get; set;}
    public TreeViewItem VisualItem { get; set; }
}

Можно ли привязать ссылку TreeViewItem к VisualItem, чтобы я мог получить TreeViewItem посредством адресации через VisualItem?

1 Ответ

0 голосов
/ 23 августа 2011

Можно попробовать, но вы получите сообщение об ошибке привязки, поскольку элементы TreeView относятся к вашему типу ItemsSourceCollection, а не к типу TreeViewItem.

Так что установите публичное свойство ItemTreeNode для привязки SelectedItem. Затем в событии SelectedItemChanged вашего дерева возьмите TreeViewItem с помощью метода ItemContainerGenerator.ContainerFromItem следующим образом:

var tvi = myTreeView.ItemContainerGenerator.ContainerFromItem(selectedItem) as TreeViewItem;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...