考虑重绘的话有点麻烦吧,简单的办法是弹出个窗口,给他输名称,输完后,把他输的文本,做为TreeNode 的header,这样
处理比较简单

解决方案 »

  1.   

    修改treeview的模板,绑定到TextBox上。 <HierarchicalDataTemplate x:Key="DataTemplate" ItemsSource="{Binding ChildrenEntityTree}">
                <TextBlock Text="{Binding CurrentBaseEntity.Name}"></TextBlock>
                <HierarchicalDataTemplate.ItemTemplate>
                    <HierarchicalDataTemplate ItemsSource="{Binding ChildrenEntityTree}">
                        <TextBlock Text="{Binding CurrentBaseEntity.Name}"></TextBlock>
                    </HierarchicalDataTemplate>
                </HierarchicalDataTemplate.ItemTemplate>
            </HierarchicalDataTemplate>把textBlock改成textBox,绑定方式改成双向绑定
      

  2.   

    你的绑定的数据实现了ObservableCollection接口没 或者INotifyPropertyChanged没 如果没有的话那就不能修改了实时刷新的。
      

  3.   

     不是实时刷新的,这个treeview是每第一次打开的时候绑定的。
    因为要修改这个目录 必须修改(数据库)和(文件所在位置的文件夹目录)
      

  4.   

    看不太懂,这个方法好像可行,就是不知道怎么用到我的这上面 <TreeView x:Name="myFolders" Margin="0,20,0,0" Width="auto" TreeViewItem.PreviewMouseRightButtonDown="TreeViewItem_PreviewMouseRightButtonDown"    TreeViewItem.Selected="TreeViewItem_Selected"  TreeViewItem.Expanded="mytreeview_Expanded" HorizontalAlignment="Left" VerticalAlignment="Top" Height="auto">
                    <TreeView.Effect>
                        <DropShadowEffect ShadowDepth="1" Opacity="0.345"/>
                    </TreeView.Effect>               
                    <TreeView.ContextMenu>
                        <ContextMenu x:Name="menu" Width="50">
                            <MenuItem Header="下载" x:Name="download" MenuItem.Click="downloadMenuItem_Click" >                         
                            </MenuItem>
                            <MenuItem Header="同步到服务器" x:Name="upload" MenuItem.Click="uploadMenuItem_Click" >
                            </MenuItem>
                            <MenuItem Header="文件夹另存为..." x:Name="share" MenuItem.Click="shareMenuItem_Click" >
                            </MenuItem>
                            <MenuItem Header="新建文件夹"  MenuItem.Click="Createfolder_click" >
                            </MenuItem>
                             <MenuItem Header="添加文件" MenuItem.Click="dg_addnewfile_Click" >
                             </MenuItem>
                             <MenuItem Header="重命名"  MenuItem.Click="rename_Click" >
                            </MenuItem>                       
                            <MenuItem Header="删除"  MenuItem.Click="Delete_Click" >
                            </MenuItem>
                        </ContextMenu>
                    </TreeView.ContextMenu>
                    <TreeView.ItemContainerStyle>
                        <Style TargetType="{x:Type TreeViewItem}">
                            <EventSetter Event="TreeViewItem.PreviewMouseRightButtonDown" Handler="TreeViewItem_PreviewMouseRightButtonDown"/>
                        </Style>
                    </TreeView.ItemContainerStyle>
                </TreeView>   
    private void TreeViewRootLoad()//加载根目录
            {            
                string loginTemp = "username=" + Global.UserName;
                DataTable dt = HtmlHelper.GetSOAPResult(loginTemp, "GetFolderFootList");
                myFolders.Items.Clear();
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    TreeViewItem tvi = new TreeViewItem();
                    tvi.Tag = dt.Rows[i]["FolderId"].ToString();
                    tvi.Header = dt.Rows[i]["FolderName"].ToString();
                    tvi.Items.Add("*");
                    if (i == dt.Rows.Count - 1)
                    {
                        fid = tvi.Tag.ToString();
                        BandFile();
                    }
                    myFolders.Items.Add(tvi);
                }
            }
     private void tv_ChildLoad(TreeViewItem tvi)//展开子目录
            {
                string loginTemp = "Folderid=" + tvi.Tag.ToString();
                DataTable dt = HtmlHelper.GetSOAPResult(loginTemp, "GetFolderChildList");
                if (!tvi.Items.Contains("*"))
                {
                    return;
                }
                tvi.Items.Clear();
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    TreeViewItem tvis = new TreeViewItem();
                    tvis.Tag = dt.Rows[i]["FolderId"].ToString();
                    tvis.Header = dt.Rows[i]["FolderName"].ToString();
                    tvis.Items.Add("*");
                    tvi.Items.Add(tvis);               
                }
            }
      

  5.   

    看不太懂,这个方法好像可行,就是不知道怎么用到我的这上面 <TreeView x:Name="myFolders" Margin="0,20,0,0" Width="auto" TreeViewItem.PreviewMouseRightButtonDown="TreeViewItem_PreviewMouseRightButtonDown"    TreeViewItem.Selected="TreeViewItem_Selected"  TreeViewItem.Expanded="mytreeview_Expanded" HorizontalAlignment="Left" VerticalAlignment="Top" Height="auto">
                    <TreeView.Effect>
                        <DropShadowEffect ShadowDepth="1" Opacity="0.345"/>
                    </TreeView.Effect>               
                    <TreeView.ContextMenu>
                        <ContextMenu x:Name="menu" Width="50">
                            <MenuItem Header="下载" x:Name="download" MenuItem.Click="downloadMenuItem_Click" >                         
                            </MenuItem>
                            <MenuItem Header="同步到服务器" x:Name="upload" MenuItem.Click="uploadMenuItem_Click" >
                            </MenuItem>
                            <MenuItem Header="文件夹另存为..." x:Name="share" MenuItem.Click="shareMenuItem_Click" >
                            </MenuItem>
                            <MenuItem Header="新建文件夹"  MenuItem.Click="Createfolder_click" >
                            </MenuItem>
                             <MenuItem Header="添加文件" MenuItem.Click="dg_addnewfile_Click" >
                             </MenuItem>
                             <MenuItem Header="重命名"  MenuItem.Click="rename_Click" >
                            </MenuItem>                       
                            <MenuItem Header="删除"  MenuItem.Click="Delete_Click" >
                            </MenuItem>
                        </ContextMenu>
                    </TreeView.ContextMenu>
                    <TreeView.ItemContainerStyle>
                        <Style TargetType="{x:Type TreeViewItem}">
                            <EventSetter Event="TreeViewItem.PreviewMouseRightButtonDown" Handler="TreeViewItem_PreviewMouseRightButtonDown"/>
                        </Style>
                    </TreeView.ItemContainerStyle>
                </TreeView>   
    private void TreeViewRootLoad()//加载根目录
            {            
                string loginTemp = "username=" + Global.UserName;
                DataTable dt = HtmlHelper.GetSOAPResult(loginTemp, "GetFolderFootList");
                myFolders.Items.Clear();
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    TreeViewItem tvi = new TreeViewItem();
                    tvi.Tag = dt.Rows[i]["FolderId"].ToString();
                    tvi.Header = dt.Rows[i]["FolderName"].ToString();
                    tvi.Items.Add("*");
                    if (i == dt.Rows.Count - 1)
                    {
                        fid = tvi.Tag.ToString();
                        BandFile();
                    }
                    myFolders.Items.Add(tvi);
                }
            }
     private void tv_ChildLoad(TreeViewItem tvi)//展开子目录
            {
                string loginTemp = "Folderid=" + tvi.Tag.ToString();
                DataTable dt = HtmlHelper.GetSOAPResult(loginTemp, "GetFolderChildList");
                if (!tvi.Items.Contains("*"))
                {
                    return;
                }
                tvi.Items.Clear();
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    TreeViewItem tvis = new TreeViewItem();
                    tvis.Tag = dt.Rows[i]["FolderId"].ToString();
                    tvis.Header = dt.Rows[i]["FolderName"].ToString();
                    tvis.Items.Add("*");
                    tvi.Items.Add(tvis);               
                }
            }
    把  DataTemplate 绑定到你的Treeview上的ItemsPanelTemplate上。
      

  6.   

    看不太懂,这个方法好像可行,就是不知道怎么用到我的这上面 <TreeView x:Name="myFolders" Margin="0,20,0,0" Width="auto" TreeViewItem.PreviewMouseRightButtonDown="TreeViewItem_PreviewMouseRightButtonDown"    TreeViewItem.Selected="TreeViewItem_Selected"  TreeViewItem.Expanded="mytreeview_Expanded" HorizontalAlignment="Left" VerticalAlignment="Top" Height="auto">
                    <TreeView.Effect>
                        <DropShadowEffect ShadowDepth="1" Opacity="0.345"/>
                    </TreeView.Effect>               
                    <TreeView.ContextMenu>
                        <ContextMenu x:Name="menu" Width="50">
                            <MenuItem Header="下载" x:Name="download" MenuItem.Click="downloadMenuItem_Click" >                         
                            </MenuItem>
                            <MenuItem Header="同步到服务器" x:Name="upload" MenuItem.Click="uploadMenuItem_Click" >
                            </MenuItem>
                            <MenuItem Header="文件夹另存为..." x:Name="share" MenuItem.Click="shareMenuItem_Click" >
                            </MenuItem>
                            <MenuItem Header="新建文件夹"  MenuItem.Click="Createfolder_click" >
                            </MenuItem>
                             <MenuItem Header="添加文件" MenuItem.Click="dg_addnewfile_Click" >
                             </MenuItem>
                             <MenuItem Header="重命名"  MenuItem.Click="rename_Click" >
                            </MenuItem>                       
                            <MenuItem Header="删除"  MenuItem.Click="Delete_Click" >
                            </MenuItem>
                        </ContextMenu>
                    </TreeView.ContextMenu>
                    <TreeView.ItemContainerStyle>
                        <Style TargetType="{x:Type TreeViewItem}">
                            <EventSetter Event="TreeViewItem.PreviewMouseRightButtonDown" Handler="TreeViewItem_PreviewMouseRightButtonDown"/>
                        </Style>
                    </TreeView.ItemContainerStyle>
                </TreeView>   
    private void TreeViewRootLoad()//加载根目录
            {            
                string loginTemp = "username=" + Global.UserName;
                DataTable dt = HtmlHelper.GetSOAPResult(loginTemp, "GetFolderFootList");
                myFolders.Items.Clear();
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    TreeViewItem tvi = new TreeViewItem();
                    tvi.Tag = dt.Rows[i]["FolderId"].ToString();
                    tvi.Header = dt.Rows[i]["FolderName"].ToString();
                    tvi.Items.Add("*");
                    if (i == dt.Rows.Count - 1)
                    {
                        fid = tvi.Tag.ToString();
                        BandFile();
                    }
                    myFolders.Items.Add(tvi);
                }
            }
     private void tv_ChildLoad(TreeViewItem tvi)//展开子目录
            {
                string loginTemp = "Folderid=" + tvi.Tag.ToString();
                DataTable dt = HtmlHelper.GetSOAPResult(loginTemp, "GetFolderChildList");
                if (!tvi.Items.Contains("*"))
                {
                    return;
                }
                tvi.Items.Clear();
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    TreeViewItem tvis = new TreeViewItem();
                    tvis.Tag = dt.Rows[i]["FolderId"].ToString();
                    tvis.Header = dt.Rows[i]["FolderName"].ToString();
                    tvis.Items.Add("*");
                    tvi.Items.Add(tvis);               
                }
            }
    把  DataTemplate 绑定到你的Treeview上的ItemsPanelTemplate上。能说的详细一些吗,我接触WPF才两个星期..
      

  7.   

    把  DataTemplate 绑定到你的Treeview上的ItemsPanelTemplate上。这还不详细???
      

  8.   

    为麻要用双绑定这么蛋疼的东西,如果用Textbox,你还要考虑,它什么时候是只读的,不可拥有可输入的焦点,什么时候又是可以有输入焦点的,这样不仅要修改模板做绑定,还要对付触法器,不如按简单的方法做,你看VIsual Studio它都是只弹出对话框。