我就是要选中一个TreeviewItem,点击一个按钮,然后刷新,对应的TreeviewItem调整了位置。

解决方案 »

  1.   

    随便一个例子教我如何调整Treeview的子节点顺序就行了。
      

  2.   

    数据表里面就有一个Show_Order。
      

  3.   

    在treeView中添加事件TreeViewItem.Selected="tvList_Selected"  private void tvList_Selected(object sender, RoutedEventArgs e)
            {
                if (e.OriginalSource == null)
                {
                    return;
                }
                TreeViewItem selItem = (tvList.SelectedItem as TreeViewItem);
                if (selItem == null) return;
                if ((selItem.Parent as TreeViewItem) == null) return;            TreeViewItem temp = (selItem.Parent as TreeViewItem).Items.GetItemAt(2) as TreeViewItem;
                if (temp == null)
                    return;
                string header = temp.Header.ToString();
            }
      

  4.   

    这一句只是获取selectItem.parent的第三个子项;如果我想获取selectItem的上一个Item或则下一个Item该如何是好.
      

  5.   

    这一句只是获取selectItem.parent的第三个子项;如果我想获取selectItem的上一个Item或则下一个Item该如何是好.
    你有认真 看代码吗??
      

  6.   

    有啊,无论我点击“City Temperature & Sales Re”、“National Custom Region Information”,还是“Local Custom Region Information” 。temp.Header都是等于"Local Custom Region Information"。
      

  7.   

    (selItem.Parent as TreeViewItem).Items.GetItemAt(2)它的意思难道不是获取父节点的第三个子项吗?
      

  8.   

    是啊,我把GetItemAt(2)写成GetItemAt(selectItem.TabIndex+1),结果selectItem.TabIndex等于2147483647。
      

  9.   


    我就是要选中一个TreeviewItem,点击一个按钮,然后刷新,对应的TreeviewItem调整了位置。
    如果只是调整位置  那么我可以给个demo你。我刚写了个qq多少
      

  10.   

    我就是要选中一个TreeviewItem,点击一个按钮,然后刷新,对应的TreeviewItem调整了位置。
    如果只是调整位置  那么我可以给个demo你。我刚写了个qq多少[email protected]
      

  11.   

    我就是要选中一个TreeviewItem,点击一个按钮,然后刷新,对应的TreeviewItem调整了位置。
    如果只是调整位置  那么我可以给个demo你。我刚写了个qq多少[email protected]
    已发送 请查收。。只是一个排序。。
      

  12.   

    我只想说一句:“感谢你整个家族。”Demo
      

  13.   

    我只想说一句:“感谢你整个家族。”Demo
    什么意思啊??骂人?是不是我理解错了  给的demo不符合
      

  14.   

    大哥你说的根据索引获取可不可以把代码写出来,我写成这样GetItemAt(selectItem.TabIndex+1)好像不行。是不是我理解错了。
      

  15.   

    首先说声不好意思,让你误会了,本人比较激动,所以感谢语都说的有点离谱。然后你给的Demo是要重写TreeviewItem的,而我的TreeviewItem是绑定数据库的,并且还有增加、修改、删除的功能,所以你给的Demo有点不太符合我现在做的项目,可不可以在不重写TreeviewItem的情况下,进行拖拽排序啊。最后说一声好意思让你误会了我的感谢语。
      

  16.   

    首先说声不好意思,让你误会了,本人比较激动,所以感谢语都说的有点离谱。然后你给的Demo是要重写TreeviewItem的,而我的TreeviewItem是绑定数据库的,并且还有增加、修改、删除的功能,所以你给的Demo有点不太符合我现在做的项目,可不可以在不重写TreeviewItem的情况下,进行拖拽排序啊。最后说一声好意思让你误会了我的感谢语。
    难道我给你的不可以实现添加修改删除吗??你里面代码你看数据绑定就知道了啊。我就是这样实现删除一个节点 数据库也删除 树节点也删除的啊
      

  17.   

    大哥你说的根据索引获取可不可以把代码写出来,我写成这样GetItemAt(selectItem.TabIndex+1)好像不行。是不是我理解错了。
    你把你数据库里的那个  排序 字段当成索引绑定到TreeViewItem上不行吗??再根据它进行删除
      

  18.   

    首先说声不好意思,让你误会了,本人比较激动,所以感谢语都说的有点离谱。然后你给的Demo是要重写TreeviewItem的,而我的TreeviewItem是绑定数据库的,并且还有增加、修改、删除的功能,所以你给的Demo有点不太符合我现在做的项目,可不可以在不重写TreeviewItem的情况下,进行拖拽排序啊。最后说一声好意思让你误会了我的感谢语。
    难道我给你的不可以实现添加修改删除吗??你里面代码你看数据绑定就知道了啊。我就是这样实现删除一个节点 数据库也删除 树节点也删除的啊
    重写 也是种比较好的方法。
      

  19.   

    我知道重写是个较好的办法,但很多时候不是我的裤子太长了,而是我的腿太短了。所以我还是希望你给个,能获取SelectItem它的上下Item的代码,如A,B,C,当点击B(TreeViewItem)时,可以获取到A或者C的值。因为你给的(selItem.Parent as TreeViewItem).Items.GetItemAt(2)只能获取到父节点的第三个子项,加上TreeViewItem的数量是不定,麻烦了,大哥。
      

  20.   

    我知道重写是个较好的办法,但很多时候不是我的裤子太长了,而是我的腿太短了。所以我还是希望你给个,能获取SelectItem它的上下Item的代码,如A,B,C,当点击B(TreeViewItem)时,可以获取到A或者C的值。因为你给的(selItem.Parent as TreeViewItem).Items.GetItemAt(2)只能获取到父节点的第三个子项,加上TreeViewItem的数量是不定,麻烦了,大哥。
    你绑定到TreeView的数据源是什么类型的??Datatable? 还是ObservableCollection集合??
      

  21.   

    DataTable。
    把你的DataTable 换成ObservableCollection或者List集合 DataTable dt = new DataTable();
                DataColumn dc = new DataColumn()
                {
                    ColumnName = "Name",
                };
                dt.Columns.Add(dc);
                for (int i = 0; i < 5; i++)
                {
                    DataRow dr = dt.NewRow();
                    dr[0] = "节点" + i;
                    dt.Rows.Add(dr);
                }
                
                foreach (DataRow row in dt.Rows)
                {
                    List.Add(new EntityTreeModel() { Name = row[0].ToString() });
                }
              
                this.tvListDataTable.ItemsSource = List;private void tvListDataTable_Selected(object sender, RoutedEventArgs e)
            {
                EntityTreeModel model = tvListDataTable.SelectedItem as EntityTreeModel;
                int currentIndex = list.IndexOf(model);   // 当前节点Index
                TreeViewItem selectedItem = (e.OriginalSource as TreeViewItem);
                var  item = this.List[currentIndex - 1];
            }前台修改TreeView模板 <HierarchicalDataTemplate x:Key="DataTemplateTable" ItemsSource="{Binding EntityTreeModel}">
                <TextBlock Text="{Binding Name}"></TextBlock>
            </HierarchicalDataTemplate>
    <!--绑定DataTable-->
                    <TreeView Name="tvListDataTable" Width="200" Margin="10,0,0,0"  Height="200" ItemTemplate="{DynamicResource DataTemplateTable}" HorizontalAlignment="Left" TreeViewItem.Selected="tvListDataTable_Selected">
                       
                    </TreeView>