在我的程序中我有一个tabItem
当 a 时被选择TreeViewItem
与同等的header
被选中。
这就是我目前拥有的(它有效):
(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 header
我选择的是由string
and an integer
.
例如:TreeViewItem
选择的总会有一个header
named "Arrival"
,但是tabItem
's header
会有这样的形式"Arrival" + integer
. The integer
值将来自父节点的header
.
对于这个过程,我想我首先需要获得header
父节点的值,因为它包含integer
我需要的价值。然后我需要以某种方式修改上面的代码来查询具有header
like, "Arrival" + parentHeader
.
我该怎么做这样的事情?
谢谢。
UPDATE
我当前的代码,使用@varocarbas的答案。我正在使用涉及设置的答案的第一个版本integer
curNumber
与父母的价值header
。单击“Arrival”节点时,代码会编译,但不会执行任何操作。
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))