0

IDE のいくつかの機能に取り組んでおり、ツリービュー項目をクリックすると、現在表示されているタブが変更されます。私はそれをやろうとしていますが、運がありません。私は何を間違っていますか?目的のタブをフォーカスするように設定するにはどうすればよいですか?

コードは次のとおりです。

        void tr_ViewOtherClass(object sender, MouseButtonEventArgs e)
        {
            string tagToView = ((TreeViewItem) sender).Tag.ToString();
            TabItem currentTab = ((TabItem) (tabControl.SelectedItem));
            if (tagToView != currentTab.Tag.ToString())
            {
                TabItem tabToView = null;
                for (int i = 0; i < tabControl.Items.Count; i++)
                {
                    tabToView = ((TabItem) (tabControl.Items[i]));
                    if (tabToView.Tag.ToString() == tagToView)
                        break;
                }
                classCodes[currentTab.Tag.ToString()] = ((TextEditor) currentTab.Content).Text;
                currentTab = tabToView;
            }
        }
4

2 に答える 2

1

currentTab変数に値を割り当てても、は変更されませんtabControl.SelectedItem

tabControl.SelectedItemその値を変更したい場合は、直接割り当てる必要があります。currentTabはポインターと同等であり、その値を変更すると、ローカル変数が指す値のみが変更されます。

于 2012-12-17T20:53:15.637 に答える
0

TabItem currentTab

TabItem tabToView
は、それぞれ単なるローカル変数です。
変更を UI にプッシュする場合は、tabControl SelectedItem を通知で双方向にバインドする必要があります。

MVVM では、TabControl の動作が異なります。
私は非MVVMの方法を与えました。
MVVM は、おそらくこれを行うためのより良い方法です。

于 2012-12-17T20:13:46.287 に答える