私のプログラムでは、同等tabItem
の a が選択されたときに選択される 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
選択している がとheader
で構成されていることです。string
integer
例:TreeViewItem
選択されたものには常にheader
名前が付いています"Arrival"
が、tabItem
のheader
は のような形式になり"Arrival" + integer
ます。値はinteger
、親ノードのheader
.
このプロセスでは、必要な値header
が含まれているため、最初に親ノードの値を取得する必要があると考えていますinteger
。header
次に、何らかの方法で上記のコードを変更して、のようなノードをクエリする必要があります"Arrival" + parentHeader
。
どうすればこのようなことをすることができますか?
ありがとうございました。
アップデート
@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))