In my program I have a tabItem
that gets selected when a TreeViewItem
with an equivalent header
is selected.
This is what I currently have (It works):
(parent_TreeViewItem.Items.Contains(SelectedItem))
{
tabControl1.SelectedItem = tabControl1.Items //Changes tab according to TreeView
.OfType<TabItem>().SingleOrDefault(n => n.Header.ToString() == SelectedItem.Header.ToString());
}
The difference with what I'm doing this time is that the tabItem
's header
that I'm selecting is composed of a string
and an integer
.
For example: The TreeViewItem
selected will always have a header
named "Arrival"
, but the tabItem
's header
will have a form like "Arrival" + integer
. The integer
value will come from the parent node's header
.
For this process I'm thinking that I'll first need to get the header
value of the parent node, since it contains that integer
value I need. Then I'll need to modify my code above in someway to query for a node with a header
like, "Arrival" + parentHeader
.
How would I do something like this?
Thank you.
UPDATE
My current code, using @varocarbas's answer. I am using the first version of the answer that involved setting the integer
curNumber
to the value of the parent's header
. The code compiles but does not do anything when the "Arrival" node is clicked on.
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;
}
UPDATE 2: Because the "Arrival" node is the grandchild of the node I was using as a parent I have changed the if
statement in my first line to:
if (parent_TreeViewItem.Items.Contains(SelectedItem.Parent))