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))