1

私のプログラムでは、同等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"が、tabItemheaderは のような形式になり"Arrival" + integerます。値はinteger、親ノードのheader.

このプロセスでは、必要な値headerが含まれているため、最初に親ノードの値を取得する必要があると考えていますintegerheader次に、何らかの方法で上記のコードを変更して、のようなノードをクエリする必要があります"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))
4

1 に答える 1