かずきのBlog
C#やJavaやRubyとメモ書き

目次

Blog 利用状況
  • 投稿数 - 392
  • 記事 - 1
  • コメント - 438
  • トラックバック - 103
ニュース
  • 思い出は、いっぱい。
コメント
プログラマ的自己紹介
  • C#とRubyを趣味で。Javaを仕事で使ってやってます。 WPFをコツコツ勉強中。 IDE大好き。Visual Studio, Eclipse, NetBeansを使用中
お気に入りのツール/IDE
  • Visual Studio 2008 std
  • Eclipse
  • NetBeans6.0以降
  • 自作のツール
プロフィール
  • 大田 一希
  • 1981年1月30日産まれ
  • AB型
  • 左利き
経歴
  • 1993年 海田中学校 入学
  • 1996年 広島県立安芸南高等学校 入学
  • 1999年 某大学 環境情報学科 入学
  • 2003年 某大学 大学院 環境学研究科 入学
  • 2005年 就職して上京
  • 今に至る
アクセサリ
  • あわせて読みたい
  • ログ解析ネット証券

書庫

日記カテゴリ

 

タイトルの通りです。要はマージンの話。
WPFは、レイアウトを指定すると、そのレイアウトの通りにコントロールを配置してくれる。
恐らくお世話になる率が高いGridレイアウトは、大体のレイアウトをこれだけで記述できちゃうくらいパワフルな代物です。

たとえば、下のようなコードを書くと絵のような画面になります。

<UserControl x:Class="SilverlightTest2.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="400" Height="300">
    <Grid x:Name="LayoutRoot" Background="White">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <TextBlock Grid.Row="0" Text="何か入れてね" />
        <TextBox Grid.Row="1" AcceptsReturn="True" />
        <StackPanel Grid.Row="2" 
                    Orientation="Horizontal" 
                    HorizontalAlignment="Right">
            <Button Content="決定" />
            <Button Content="キャンセル" />
        </StackPanel>
    </Grid>
</UserControl>

image

割とありがちな、画面の説明のためのテキストと入力欄とOKなのかNGなのかを選択するためのボタンがあるタイプの画面です。なんというか、敷き詰められた感があって手抜き感たっぷりに感じてしまう。
何かの番組(今もしてるのかな?)に出てきそうな「ゆとりの空間魔術師」とまでは行かなくても、普通にそれっぽい隙間は入れたいと思うのは人間の性。そういうときに、マージンを使います。

マージンを指定するのは簡単で、Marginプロパティに値を設定するだけ。四方に同じマージンを指定する場合は、単純に値を1つ設定するだけでいいようになってる。

たとえば、ボタンやテキストボックスの周りに幅5のマージンが欲しかったら下のようにすればいい。

        <TextBlock Grid.Row="0" Text="何か入れてね" />
        <TextBox Grid.Row="1" AcceptsReturn="True" />
        <StackPanel Grid.Row="2" 
                    Margin="5"
                    Orientation="Horizontal" 
                    HorizontalAlignment="Right">
            <Button Margin="5" Content="決定" />
            <Button Margin="5" Content="キャンセル" />
        </StackPanel>

image

一律に5とったもんだから、若干不自然な感じもするけど、隙間は開いた。こんな風に調整していけばピッチピチに詰まった画面じゃなくなる。後はセンスの問題だ!

ちなみに、マージンの指定方法には知ってるだけだと下のような指定方法がある。
多分これで全部じゃないかな…?

Margin="5":上下左右に5
Margin="5,10":左右に5、上下に10
Margin="10,20,30,40":左に10、上に20、右に30、下に40

ここら辺の変換は、Marginプロパティにコンバータがしかけてあるのだろう。実際のMarginプロパティの型はLeft,Top,Right,Bottomというdouble型のプロパティを持つThickness構造体であらわされてる。
C#からマージンを指定する場合は、この型を使うことになる。

投稿日時 : 2008年7月1日 17:04
コメント
  • # re: [WPF][Silverlight]コントロール間に程よい幅をあけよう
    JZ5
    Posted @ 2008/07/01 22:28
    コンマなくてもスペースだけでもいけますね。
    なんでインテリセンスに左 上とかでないのか謎です。
    覚えていなくて いつも困ります。
  • # re: [WPF][Silverlight]コントロール間に程よい幅をあけよう
    かずき
    Posted @ 2008/07/01 22:59
    フォローありがとうございます~。
    確かにインテリセンスに出ないので私もいつも忘れます。

    微妙に改善してほしい所ですよね~
タイトル  
名前  
Url
コメント