C# 如何重命名动态创建的TreeView项的标题
我对WPF:C中的TreeView是新手,我正在学习如何使用动态创建的TreeView项。现在,我的程序允许用户创建动态TreeViewItem,然后删除它们。对于我的下一步,我想编程的能力,重命名这些动态项目。从理论上讲,这个过程非常简单,但是,我不知道如何处理C代码 首先,我想概述一下我的重命名过程,以准确地显示我需要帮助的地方 用户右键单击树视图项 一个contextMenu下拉菜单“完成” 用户单击重命名。。。一扇窗户打开了 在文本框中输入TreeViewItem的名称已完成 如果文本框中的文本与主窗口的TreeView中的标题匹配,则会打开另一个窗口,允许用户输入TreeView项的新名称。残缺的 在新窗口中输入名称时,用户单击enter,项目名称将更改为文本框中输入的名称。残缺的 这是我的第5步代码,程序需要验证输入的头是否存在于TreeView中。在我不确定正确代码的地方,我有伪代码C# 如何重命名动态创建的TreeView项的标题,c#,wpf,treeview,C#,Wpf,Treeview,我对WPF:C中的TreeView是新手,我正在学习如何使用动态创建的TreeView项。现在,我的程序允许用户创建动态TreeViewItem,然后删除它们。对于我的下一步,我想编程的能力,重命名这些动态项目。从理论上讲,这个过程非常简单,但是,我不知道如何处理C代码 首先,我想概述一下我的重命名过程,以准确地显示我需要帮助的地方 用户右键单击树视图项 一个contextMenu下拉菜单“完成” 用户单击重命名。。。一扇窗户打开了 在文本框中输入TreeViewItem的名称已完成 如果文本框
//ENTER - Select TreeViewItem, open enterName window
private void button2_Click(object sender, RoutedEventArgs e)
{
//Query for Window1
var mainWindow = Application.Current.Windows
.Cast<Window1>()
.FirstOrDefault(window => window is Window1) as Window1;
//If(textbox1.text == one of the treeViewItem headers)
var newWindow = new EnterCartName();
newWindow.Show();
//else,
//MessageBox.Show("Value entered does not match a current cart name");
//this.Close();
}
我认为动态TreeView资产的主要问题是我觉得它们对我来说是无形的。如果我不知道它们叫什么,或者不知道如何正确地引用它们,我该如何处理它们呢。如果您知道有关此主题的任何指南或资源,请随时与我们分享
非常感谢
我的最终解决方案:
设置好收割台非常简单:
treeViewItem.Header = textBox1.Text;
查找它应该类似于查找任何TreeViewItem.Header是否与文本框中提供的文本匹配:
然后,当您具有将标题更改为的值时:
SetItemHeader(treeView.Items, textInputToMatch, textToChangeHeaderTo);
我明白你的意思,但这种方式不包括步骤6或我的第二个窗口。您是否建议用户在同一窗口中同时输入TreeViewItem的名称和它的新名称?不,我认为您可以自己对标题匹配方法稍微编辑此方法,然后使用此方法更新标题。不过,我已经更新了我的答案。好吧,我只是用你的解决方案更新了我的答案。但是,检查一直返回为false,我肯定输入了正确的名称。您应该将ItemCollection从TreeView传递到CheckItemHeader方法,而不仅仅是一个TreeView项。。。除非所有其他树上的动物都是它的孩子。您必须调试这些方法以查看传入的项。。。你是唯一能做到这一点的人。是的,我通过TreevieItem是因为我只想和它的孩子们打交道。那么在这种情况下,我应该调试吗?
treeViewItem.Header = textBox1.Text;
private void SetItemHeader(ItemCollection treeViewItems, string input, string output)
{
for (int index = 0; index < treeViewItems.Count; index++)
{
TreeViewItem item = (TreeViewItem)treeViewItems[index];
if (item.Header == input)
{
item.Header = output;
return;
}
else if (item.Items.Count > 1) SetItemHeader(item.Items, input, output);
}
}
private bool CheckItemHeader(ItemCollection treeViewItems, string input)
{
for (int index = 0; index < treeViewItems.Count; index++)
{
TreeViewItem item = (TreeViewItem)treeViewItems[index];
if (item.Header == input) return true;
else if (item.Items.Count > 1) return CheckItemHeader(item.Items, input);
}
return false;
}
bool hasFoundMatch = CheckItemHeader(treeView.Items, textInputToMatch);
SetItemHeader(treeView.Items, textInputToMatch, textToChangeHeaderTo);