Silverlight 4:TreeView/HierarchycalDataTemplate/Get Selected Node/Leaf问题
对于以上XAML,我需要通过编程知道哪个是所选节点或叶?您已经捕获到选择事件“tvPageManager”,因此当前节点作为参数传递(例如NewValue):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()); } 高科技魔术, 对不起,我没有充分解释
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++;
}
}