In my program I have a tabItem
that gets selected when a TreeViewItem
with an equivalent header
is 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组成。header
string
integer
例如:TreeViewItem
选中的总是有一个header
命名"Arrival"
的,但tabItem
'sheader
会有一个类似的形式"Arrival" + integer
。该integer
值将来自父节点的header
.
对于这个过程,我认为我首先需要获取header
父节点的值,因为它包含integer
我需要的值。然后,我需要以某种方式修改我上面的代码,以查询带有header
like,的节点"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))