c303さんが自作のDockPanelをSilverlightで使ってるので、何でだろ?って思ってSilverlightを弄くってみたら、DockPanel無かったのかorz
コンボボックスも無かったり、地味に使うものが無いSilverlight2!
まったく持ってけしからん!!
といっても、Silverlightも結構強力なもので「XXXXが無ければ作ればいいじゃない?」ということが平気で言える。
DockPanelに至っては、WPFで一番強力なレイアウトのGridが使えるので、そいつでまかなえたりする。
ということで、レッツトライ!
構造としては、縦方向にはTop,Center,Bottomにあたる3行をおく。横方向にもLeft,Center,Rightにあたる3列をおく。後は、RowSpanとColumnSpanを適当に設定してコントロールを置くと完成。
<UserControl x:Class="DockPanelModoki.Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid x:Name="LayoutRoot" Background="White">
<Grid.RowDefinitions>
<!--
Top, Center, Bottom
TopとBottomに必要なだけ幅を指定して、Centerの部分は残り全部。
-->
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<!--
Left Center Right
LeftとRightに必要なだけ幅を指定して、Centerの部分は残り全部。
-->
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Button Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="2"
Content="Top"/>
<Button Grid.Row="0" Grid.Column="0" Grid.RowSpan="2"
Content="Left"/>
<Button Grid.Row="1" Grid.Column="2"
Content="Right"/>
<Button Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="3"
Content="Bottom"/>
<Button Grid.Row="1" Grid.Column="1"
Content="Centerにあたるボタン"/>
</Grid>
</UserControl>
実行してみると、DockPanelっぽくなってる。
小さくしても大丈夫
