WPF有没有办法在selectionchanged事件上获取项目的容器?

时间:2013-08-13 23:23:53

标签: c# wpf xaml

通常我会搜索可视树或使用itemcontainergenerator来获取容器。但是,在wpf中,hierachicaldatatemplates为每个级别都有一个itemcontainergenerator,并且它看起来并不像selectionchanged的事件参数包含实际的父项或项的容器。

我可以通过触发实际的treeviewitem的moused来解决这个问题。但是,我不能使用treeview的selectionchanged事件来访问所选项目周围的treeview项目容器,这似乎很奇怪。

1 个答案:

答案 0 :(得分:2)

在TreeView声明中:

<TreeView Name="myTreeView" TreeViewItem.Selected="OnItemSelected"
ItemsSource="{Binding Source={StaticResource myHierarchicalData}}"/>

OnItemSelected处理程序:

private void OnItemSelected(object sender, RoutedEventArgs e)
{
    myTreeView.Tag = e.OriginalSource;
}

以下是访问TreeViewItem的代码:

if (myTreeView.SelectedItem != null)
{
    TreeViewItem selectedTVI = myTreeView.Tag as TreeViewItem;

    // add your code here
}