Silverlight 4:TreeView/HierarchycalDataTemplate/Get Selected Node/Leaf问题

Silverlight 4:TreeView/HierarchycalDataTemplate/Get Selected Node/Leaf问题,silverlight,hierarchicaldatatemplate,Silverlight,Hierarchicaldatatemplate,对于以上XAML,我需要通过编程知道哪个是所选节点或叶?您已经捕获到选择事件“tvPageManager”,因此当前节点作为参数传递(例如NewValue): private void tvPageManager\u选择已更改(对象发送方,RoutedPropertyChangedEventArgs e) { //在SelectedItem更改时执行操作 Show(((TreeViewItem)e.NewValue.Header.ToString()); } 高科技魔术, 对不起,我没有充分解释

对于以上XAML,我需要通过编程知道哪个是所选节点或叶?

您已经捕获到选择事件“tvPageManager”,因此当前节点作为参数传递(例如NewValue):

private void tvPageManager\u选择已更改(对象发送方,RoutedPropertyChangedEventArgs e)
{
//在SelectedItem更改时执行操作
Show(((TreeViewItem)e.NewValue.Header.ToString());
}
高科技魔术, 对不起,我没有充分解释我的问题,我已经找到了解决办法

private void tvPageManager_SelectionChanged(object sender, RoutedPropertyChangedEventArgs<Object> e)
{
    //Perform actions when SelectedItem changes
    MessageBox.Show(((TreeViewItem) e.NewValue).Header.ToString());
}
private void ExpandNodeAndSelectChild()
{
如果(分支选择器<1 | |叶选择器<1)
返回;
TreeViewItem项=null;
int itemAtIndex=0;
//更新树布局
this.tvName.UpdateLayout();
foreach(this.tvName.Items中的var分支)
{
item=(this.tvName.GetContainerFromItem(this.tvName.Items[itemAtIndex])作为TreeViewItem);
if(item!=null&&item.HasItems)
{
if((分支为Model.BranchBusinessObject).Id==branchSelector&&(!item.IsExpanded))
item.IsExpanded=true;
foreach(item.Items中的变量叶)
{
item=(this.tvName.GetContainerFromItem(作为Model.LeafBusinessObject的叶)作为TreeViewItem);
if(item!=null&((leaf as Model.LeafBusinessObject.Id==leaf选择器))
{
item.IsSelected=true;
打破
}                        
}
}
itemAtIndex++;
}
}

很抱歉没有说得足够具体。实际上我需要从c代码中选择一个节点。场景:我在运行时插入/删除子节点,此时集合发生更改(treeview已绑定到该集合;this.tvPageManager.ItemsSource=burst.BurstPages)。因此,treeview中的选择(选定焦点)会发生变化。成功完成子节点的添加/删除后,我需要再次设置它。啊,您要编写递归搜索,然后在所需的树节点上将IsSelected属性设置为true。识别目标节点的方法是什么?标签值?文本?
private void tvPageManager_SelectionChanged(object sender, RoutedPropertyChangedEventArgs<Object> e)
{
    //Perform actions when SelectedItem changes
    MessageBox.Show(((TreeViewItem) e.NewValue).Header.ToString());
}
    private void ExpandNodeAndSelectChild()
    {
        if (branchSelector < 1 || leafSelector < 1)
            return;

        TreeViewItem item = null;
        int itemAtIndex = 0;

        //Update tree layout
        this.tvName.UpdateLayout();

        foreach (var branch in this.tvName.Items)
        {
            item = (this.tvName.GetContainerFromItem(this.tvName.Items[itemAtIndex]) as TreeViewItem);
            if (item != null && item.HasItems)
            {
                if ((branch as Model.BranchBusinessObject).Id== branchSelector && (!item.IsExpanded))
                    item.IsExpanded = true;

                foreach (var leaf in item.Items)
                {
                    item = (this.tvName.GetContainerFromItem(leaf as Model.LeafBusinessObject) as TreeViewItem);
                    if (item != null && ((leaf as Model.LeafBusinessObject).Id== leafSelector))
                    {
                        item.IsSelected = true;
                        break;
                    }                        
                }
            }
            itemAtIndex++;
        }
    }