私のプログラムでは、同等tabItemの a が選択されたときに選択される aがあります。TreeViewItemheader
これは私が現在持っているものです(動作します):
(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で構成されていることです。stringinteger
例: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))