マスターページならぬマスターウィンドウが欲しい。

ASP.NETにマスターページなるものがある。
ASP.NET マスター ページの概要
2.0の頃の話なので、今も盛んに活用されているかどうかは怪しいけど。
レイアウトに一貫性を持たせる為の手段の1つであった。この概念はおそらく、今も何かしらの技術を以って実現されている。と思う。
ASP.NETにかぎらず、Windows.Formsでも、似たような考えで、基底のクラスを作り、それを継承して開発していた。
という事は当然、WPFでもほしくなったわけで。
まず、そのベースとなるレイアウトを考えた。
1.メニューバー
 古臭いとは言われても、これは欲しい。リボンなんていらねー。
2.ステータスバー
 これはなかなかなくならないだろ。メッセージを表示したり、時計を表示したり。
 遊びなら、CPUの使用率とか、メモリの使用率も良いかも。
3.ボデー
 ここが各画面で変わる部分。何が入るかなんてわかりません。
4.ヘッダーとフッター
 タイトルだったり、ボタンだったり。操作系のパネル的な扱いかな。
だいたいこんなもんだと。ありふれているけど、それが良い。なにせユーザさんの中には、横文字が嫌いとか、PC嫌いとかいう人がいるので、奇抜(良く言えば斬新)すぎると、受け入れてくれない確率があがってしまう。で、以上を実査に画面に起こしてみた(まだマスター化はしてない)。
<Window x:Class="TawamureDays.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<DockPanel SnapsToDevicePixels="True">
<Menu KeyboardNavigation.TabNavigation="Cycle"
Focusable="False"
DockPanel.Dock="Top">
<MenuItem Header="終了"/>
<MenuItem Header="ヘルプ"/>
</Menu>
<ContentControl DockPanel.Dock="Top">*ヘッダー</ContentControl>
<StatusBar DockPanel.Dock="Bottom">
<StatusBar.ItemsPanel>
<ItemsPanelTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
</Grid>
</ItemsPanelTemplate>
</StatusBar.ItemsPanel>
<StatusBarItem Grid.Column="0"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch">
<ContentPresenter HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Focusable="False"
Content="*ステータスメッセージ"/>
</StatusBarItem>
<Separator Grid.Column="1"/>
<StatusBarItem Grid.Column="2"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch">
<ContentPresenter HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Focusable="False"
Content="*ズーム(100%とか)"/>
</StatusBarItem>
<Separator Grid.Column="3"/>
<StatusBarItem Grid.Column="4"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch">
<ContentPresenter HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Focusable="False"
Content="*時計(12:30)"/>
</StatusBarItem>
</StatusBar>
<ContentControl DockPanel.Dock="Bottom">*フッター</ContentControl>
<ContentControl>
<Border BorderThickness="1" BorderBrush="Black">
<TextBlock>
*ここに何かしらのコンテンツ
</TextBlock>
</Border>
</ContentControl>
</DockPanel>
</Window>
実際に実行したら↓のような感じ

20120831_1
雛形としては、こんなものか。これを共通化させると共に、融通が効くようにする必要もある。
方法としては、ControlTemplateを使う。
続く。
スポンサーサイト
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: WPF4 | コメント: 0 | トラックバック: 0


この記事へのコメント

コメントの投稿

非公開コメント


サイドバー背後固定表示サンプル

当ブログに書かれたソースコードは流用自由です。

バグ、スペルミス等はありうる事です。

ご利用の際は自己責任でお願いしますm(_ _)m