So wählen Sie ein TabItem anhand seines Headers aus

In meinem Programm habe ich einetabItem das wird ausgewählt, wenn aTreeViewItem mit einem Äquivalentheader ist ausgewählt.

Folgendes habe ich derzeit (es funktioniert):

(parent_TreeViewItem.Items.Contains(SelectedItem))
{
          tabControl1.SelectedItem = tabControl1.Items //Changes tab according to TreeView
                .OfType<TabItem>().SingleOrDefault(n => n.Header.ToString() == SelectedItem.Header.ToString());
}

Der Unterschied zu dem, was ich diesmal mache, ist, dass dietabItem'sheader Das, was ich auswähle, besteht aus astring und eininteger.

Zum Beispiel: DieTreeViewItem Ausgewählt wird immer einheader genannt"Arrival", aber dietabItem'sheader wird eine Form haben wie"Arrival" + integer. Dasinteger Der Wert wird vom übergeordneten Knoten stammenheader.

Für diesen Prozess denke ich, dass ich zuerst das bekommen mussheader Wert des übergeordneten Knotens, da er diesen enthältinteger Wert, den ich brauche. Dann muss ich meinen obigen Code in irgendeiner Weise ändern, um einen Knoten mit einem abzufragenheader mögen,"Arrival" + parentHeader.

Wie würde ich so etwas machen?

Vielen Dank.

AKTUALISIEREN

Mein aktueller Code mit der Antwort von @ varocarbas. Ich verwende die erste Version der Antwort, die das Einstellen derinteger curNumber auf den Wert der Elternheader. Der Code kompiliert, führt aber nichts aus, wenn der "Arrival" -Knoten angeklickt wird.

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: Da der "Arrival" -Knoten das Enkelkind des Knotens ist, den ich als übergeordnetes Element verwendet habe, habe ich den geändertif Aussage in meiner ersten Zeile zu:

 if (parent_TreeViewItem.Items.Contains(SelectedItem.Parent))

Antworten auf die Frage(1)

Ihre Antwort auf die Frage