2011-12-13 17 views
2

私はtabcontrolを持っていて、私はいくつかのタブアイテムヘッダを左に、そして他のものは右に揃えたいと思っています。いくつかのタブを左に並べ、他のタブを右に並べる方法は? (wpfのTabControl)

  • スタイル::私は右、これを使用してのTabItemを揃えることができます:

align wpf tabcontrol strip

私はすでに試した何

http://img269.imageshack.us/img269/8894/tabcontrol.png

:このモックのスクリーンショットのようにしかし、私は左右のタブ項目を混在させる方法を見つけることができませんでした。

  • 2つのTabControlsを使用する:2つの重複するTabControlを持つことができます.1つは左揃えタブ、もう1つは右揃えタブです。難しさは、彼らに切り替えさせることです。ユーザーがタブヘッダーをクリックしたとき(Ishitvisible = trueの場合でも)、ClickまたはMouseDownは一貫して起動しません。 TabControl 2で以前にタブ 'D'を選択した後、Tab 'A'に移動して 'D'に戻ると、SelectionChangedは機能しません。TabControl 2は選択が変更されたことを知らないためです。

この時点で私は考えが狂います。

+0

「ユーザーがタブヘッダーをクリックしたときにクリックまたはマウスダウンが一貫して発生しない」 - 代わりに何が起こるのですか? 'SelectionChanged ...'何が起こるはずですか?起こっている行動と目標の行動の例を挙げてください。 –

+0

"ヘッダー"はMouseDownイベントを発生させません。あなたはヘッダーの内容としてTextBlockを置くことができますが、それはフルヘッダーよりも小さいので、時々クリックを捕捉します。 – Sugrue

+0

SelectionChangedは、そのタブコントロール内のユーザーがタブを変更した場合にのみ発生します。 1つのタブコントロールタブから最初のタブコントロールタブに戻ると、そのタブコントロールはSelectionChangedイベントを登録しません。その理由は、選択が変更されていないからです。 (意味がありますか?そうでない場合は、ダミーアプリケーションを作成して自分自身を試してください) – Sugrue

答えて

2

TabPanelのテンプレートを上書きすることはできますが、それでも問題が解決しない場合は、TabControl.Templateを上書きする必要があります。デフォルトのコントロールテンプレートは、ので、あなたの最善の策は、ホスティングのために、独自のパネルを使用するTabControl.Templateを上書きするだろう、あなたは無効にすることができますテンプレートを持っていないhere

編集

ちょうどテスト、およびTabPanelを見つけることができますTabItems。

+0

子供のレイアウト(TabItems)を処理​​する必要はありませんか?テンプレートは、子供がいる場所ではなく、見た目の方が多いようです。 ? –

+1

@ jberger 'TabItems'は' TabPanel'でホストされています。アイテムを別々に表示するために上書きできるかどうかはわかりませんでした。私はちょうどテストしたが、あなたはできないので、最良の選択肢は 'TabControl.Template'を上書きすることだと思っています – Rachel

+2

入手しました。解決策は、リンクで説明されているTab.controlテンプレートコードを使用するが、TabPanel(x:Name = "HeaderPanel")をグリッドに変更し、列定義(幅自動、自動、自動、*、自動)を設定することです。次に、Grid.Column = "?"を設定することができます。それぞれのTabItemに対して – Sugrue

0

「Andrew Hanlon」ありがとうございました.Blendを使用してTabControlテンプレートを編集できます。

  • それは私と一緒に働くHorizontalAlignment="Right"

を追加しDockPanel

  • TabPanelを交換してください。

  • 関連する問題