気楽なソフト工房

プログラミングについていろいろな記事を書いています。



mykonos2008

Author:mykonos2008
システムエンジニアとして働いている30代の会社員です。
仕事や趣味でプログラムを書いている方の役に立つ記事を書いていきたいと思っています。
ご意見、ご感想はこちらまで
If you are an english speaker,Please visit my english blog.

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
前回は、UserControl内のGridに動的に1つの「TabControl」を配置するコードを紹介しました。
本日は、2つの「TabControl」を左右に並べて配置する部分を紹介します。

通常モードの場合は、1行1列のGridに、1つのTabControlを配置していましたが、分割モードでは
Gridを1行2列にし、各列にTabControlを貼り付けます。以下がそれを行っている部分のコードです。

「TabHost.xaml.cs」
 public void OpenDouble()
 {

  解説:2つのTabControlをホストするGridの行と列を一旦
  クリアし、1行2列のGridになるように行と列の定義を追加し直します。

     //一旦クリアする
     _tabPanel.Children.Clear();
     _tabPanel.ColumnDefinitions.Clear();
     _tabPanel.RowDefinitions.Clear();

     //列を定義する
     ColumnDefinition col1 = new ColumnDefinition();
     _tabPanel.ColumnDefinitions.Add(col1);

     ColumnDefinition col2 = new ColumnDefinition();
     _tabPanel.ColumnDefinitions.Add(col2);

     //行を定義する
     RowDefinition row = new RowDefinition();
     _tabPanel.RowDefinitions.Add(row);

  解説:元々のTabControlに追加されていたTabページのうち、
  選択されていたページを右側のTabControlに移動させます。

     //現在選択されているTabのページを
     //右側に開くTabControlに移動する
     ExtendedTabItem selectedItem = _leftTab.SelectedItem as ExtendedTabItem;
     _leftTab.Items.Remove(selectedItem);

     _rightTab.Items.Add(selectedItem);

  解説:以前にも一度解説しましたがTabControlに
  Tabページが初めて追加された場合に内容が表示されないという現象があり
  それを回避するためにダミーのページを追加し、削除する処理を行っています。

     ExtendedTabItem item = new ExtendedTabItem();
     item.Header = "ダミー";
     item.Content = "ダミー";
     _rightTab.Items.Add(item);
     _rightTab.Items.Remove(item);

  最後にTabControlをGridに追加し、Grid上の位置を指定しています。

     //追加しなおす
     _tabPanel.Children.Add(_leftTab);
     Grid.SetColumn(_leftTab, 0);
     Grid.SetRow(_leftTab, 0);

     _tabPanel.Children.Add(_rightTab);
     Grid.SetColumn(_rightTab, 1);
     Grid.SetRow(_rightTab, 0);

     _isDivided = true;

  分割の操作を指示できるかどうかを示すフラグを
  falseに設定する(既に分割されているので)

     IsDividable = false;
 }

WPFのGridは柔軟性が有って、とても便利ですね。いろいろな場面で使えそうです。

次回は左右に並べたTabControlの幅を境界をドラッグすることにより、変更することが出来るように
しましたので、その方法をレポートします。

本日のソース




コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://csfun.blog49.fc2.com/tb.php/29-ec392762

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。