In my program I have a tabItemthat gets selected when a TreeViewItemwith an equivalent headeris selected.
这是我目前拥有的(它有效):
(parent_TreeViewItem.Items.Contains(SelectedItem))
{
tabControl1.SelectedItem = tabControl1.Items //Changes tab according to TreeView
.OfType<TabItem>().SingleOrDefault(n => n.Header.ToString() == SelectedItem.Header.ToString());
}
与我这次所做的不同之处在于,我选择的tabItem's由 a和 an组成。headerstringinteger
例如:TreeViewItem选中的总是有一个header命名"Arrival"的,但tabItem'sheader会有一个类似的形式"Arrival" + integer。该integer值将来自父节点的header.
对于这个过程,我认为我首先需要获取header父节点的值,因为它包含integer我需要的值。然后,我需要以某种方式修改我上面的代码,以查询带有headerlike,的节点"Arrival" + parentHeader。
我该怎么做这样的事情?
谢谢你。
更新
我当前的代码,使用@varocarbas 的答案。我正在使用答案的第一个版本,该版本涉及将 设置integer curNumber为父级的值header。单击“到达”节点时,代码编译但不执行任何操作。
if (parent_TreeViewItem.Items.Contains(SelectedItem.Parent)) //Location - Actions tabs
{
TreeViewItem parentItem = (TreeViewItem)SelectedItem.Parent;
int curNumber = getNumber(parentItem.Header.ToString());
tabControl1.SelectedItem = tabControl1.Items //Changes tab according to TreeView
.OfType<TabItem>().SingleOrDefault(n => n.Header.ToString() == SelectedItem.Header.ToString() + curNumber.ToString());
}
public static int getNumber(string parentNodeHeader)
{
int curNumber = 0;
curNumber = Convert.ToInt32(parentNodeHeader);
return curNumber;
}
更新 2:因为“到达”节点是我用作父节点的节点的孙子节点,所以我已将if第一行中的语句更改为:
if (parent_TreeViewItem.Items.Contains(SelectedItem.Parent))