<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>Silverlight</title><link>http://blogs.wankuma.com/kazuki/category/1880.aspx</link><description>Silverlight</description><managingEditor>kazuki@wankuma.com (かずき)</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[WPF][Silverlight]コントロール間に程よい幅をあけよう</title><link>http://blogs.wankuma.com/kazuki/archive/2008/07/01/146551.aspx</link><pubDate>Tue, 01 Jul 2008 17:04:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/07/01/146551.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/146551.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/07/01/146551.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/146551.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/146551.aspx</trackback:ping><description>&lt;p&gt;タイトルの通りです。要はマージンの話。&lt;br&gt;WPFは、レイアウトを指定すると、そのレイアウトの通りにコントロールを配置してくれる。&lt;br&gt;恐らくお世話になる率が高いGridレイアウトは、大体のレイアウトをこれだけで記述できちゃうくらいパワフルな代物です。&lt;/p&gt; &lt;p&gt;たとえば、下のようなコードを書くと絵のような画面になります。&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:ad57fff4-0443-4631-afc6-13b9c647b418" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="xml"&gt;&amp;lt;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"&amp;gt;
    &amp;lt;Grid x:Name="LayoutRoot" Background="White"&amp;gt;
        &amp;lt;Grid.RowDefinitions&amp;gt;
            &amp;lt;RowDefinition Height="Auto" /&amp;gt;
            &amp;lt;RowDefinition Height="*" /&amp;gt;
            &amp;lt;RowDefinition Height="Auto" /&amp;gt;
        &amp;lt;/Grid.RowDefinitions&amp;gt;
        &amp;lt;Grid.ColumnDefinitions&amp;gt;
            &amp;lt;ColumnDefinition Width="*" /&amp;gt;
        &amp;lt;/Grid.ColumnDefinitions&amp;gt;
        &amp;lt;TextBlock Grid.Row="0" Text="何か入れてね" /&amp;gt;
        &amp;lt;TextBox Grid.Row="1" AcceptsReturn="True" /&amp;gt;
        &amp;lt;StackPanel Grid.Row="2" 
                    Orientation="Horizontal" 
                    HorizontalAlignment="Right"&amp;gt;
            &amp;lt;Button Content="決定" /&amp;gt;
            &amp;lt;Button Content="キャンセル" /&amp;gt;
        &amp;lt;/StackPanel&amp;gt;
    &amp;lt;/Grid&amp;gt;
&amp;lt;/UserControl&amp;gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/WPFSilverlight_EFCB/image.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="197" alt="image" src="http://kazuki.wankuma.com/images/2008/WPFSilverlight_EFCB/image_thumb.png" width="244" border="0"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;割とありがちな、画面の説明のためのテキストと入力欄とOKなのかNGなのかを選択するためのボタンがあるタイプの画面です。なんというか、敷き詰められた感があって手抜き感たっぷりに感じてしまう。&lt;br&gt;何かの番組（今もしてるのかな？）に出てきそうな「ゆとりの空間魔術師」とまでは行かなくても、普通にそれっぽい隙間は入れたいと思うのは人間の性。そういうときに、マージンを使います。&lt;/p&gt;
&lt;p&gt;マージンを指定するのは簡単で、Marginプロパティに値を設定するだけ。四方に同じマージンを指定する場合は、単純に値を１つ設定するだけでいいようになってる。&lt;/p&gt;
&lt;p&gt;たとえば、ボタンやテキストボックスの周りに幅５のマージンが欲しかったら下のようにすればいい。&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:059a9245-b016-44a0-9622-b2d2dfa37817" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="xml"&gt;        &amp;lt;TextBlock Grid.Row="0" Text="何か入れてね" /&amp;gt;
        &amp;lt;TextBox Grid.Row="1" AcceptsReturn="True" /&amp;gt;
        &amp;lt;StackPanel Grid.Row="2" 
                    Margin="5"
                    Orientation="Horizontal" 
                    HorizontalAlignment="Right"&amp;gt;
            &amp;lt;Button Margin="5" Content="決定" /&amp;gt;
            &amp;lt;Button Margin="5" Content="キャンセル" /&amp;gt;
        &amp;lt;/StackPanel&amp;gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/WPFSilverlight_EFCB/image_3.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="201" alt="image" src="http://kazuki.wankuma.com/images/2008/WPFSilverlight_EFCB/image_thumb_3.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;一律に５とったもんだから、若干不自然な感じもするけど、隙間は開いた。こんな風に調整していけばピッチピチに詰まった画面じゃなくなる。後はセンスの問題だ！&lt;/p&gt;
&lt;p&gt;ちなみに、マージンの指定方法には知ってるだけだと下のような指定方法がある。&lt;br&gt;多分これで全部じゃないかな…？&lt;/p&gt;
&lt;p&gt;Margin="5"：上下左右に5&lt;br&gt;Margin="5,10"：左右に5、上下に10&lt;br&gt;Margin="10,20,30,40"：左に10、上に20、右に30、下に40&lt;/p&gt;
&lt;p&gt;ここら辺の変換は、Marginプロパティにコンバータがしかけてあるのだろう。実際のMarginプロパティの型はLeft,Top,Right,Bottomというdouble型のプロパティを持つThickness構造体であらわされてる。&lt;br&gt;C#からマージンを指定する場合は、この型を使うことになる。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/146551.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[Silverlight]Silverlight2にはCommandがないのかな？</title><link>http://blogs.wankuma.com/kazuki/archive/2008/06/30/146381.aspx</link><pubDate>Mon, 30 Jun 2008 18:15:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/06/30/146381.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/146381.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/06/30/146381.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/146381.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/146381.aspx</trackback:ping><description>&lt;P&gt;ぱっと見た感じ見当たらない。&lt;BR&gt;CommandBindingsとかがコードエディタで補完されない！！&lt;/P&gt;
&lt;P&gt;う～ん。無いのか&lt;BR&gt;参考URL：&lt;A href="http://d.hatena.ne.jp/Yamaki/20080324/1206341328"&gt;http://d.hatena.ne.jp/Yamaki/20080324/1206341328&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;結構好きな機能だったのに残念です。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/146381.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[C#][Silverlight]Silverlight2にはDockPanelって無いのね</title><link>http://blogs.wankuma.com/kazuki/archive/2008/06/30/146262.aspx</link><pubDate>Mon, 30 Jun 2008 00:35:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/06/30/146262.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/146262.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/06/30/146262.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/146262.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/146262.aspx</trackback:ping><description>&lt;p&gt;c303さんが&lt;a href="http://blogs.wankuma.com/c303/archive/2008/06/29/146186.aspx"&gt;自作のDockPanelをSilverlightで使ってる&lt;/a&gt;ので、何でだろ？って思ってSilverlightを弄くってみたら、DockPanel無かったのかorz&lt;br&gt;コンボボックスも無かったり、地味に使うものが無いSilverlight2！&lt;/p&gt; &lt;p&gt;まったく持ってけしからん！！&lt;br&gt;といっても、Silverlightも結構強力なもので「XXXXが無ければ作ればいいじゃない？」ということが平気で言える。&lt;br&gt;DockPanelに至っては、WPFで一番強力なレイアウトのGridが使えるので、そいつでまかなえたりする。&lt;/p&gt; &lt;p&gt;ということで、レッツトライ！&lt;br&gt;構造としては、縦方向にはTop,Center,Bottomにあたる3行をおく。横方向にもLeft,Center,Rightにあたる3列をおく。後は、RowSpanとColumnSpanを適当に設定してコントロールを置くと完成。&lt;/p&gt; &lt;p&gt; &lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:87dbea30-17e6-44e0-9328-b0994cb28028" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="xml"&gt;&amp;lt;UserControl x:Class="DockPanelModoki.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"&amp;gt;
    &amp;lt;Grid x:Name="LayoutRoot" Background="White"&amp;gt;
        &amp;lt;Grid.RowDefinitions&amp;gt;
            &amp;lt;!-- 
                Top, Center, Bottom 
                TopとBottomに必要なだけ幅を指定して、Centerの部分は残り全部。
            --&amp;gt;
            &amp;lt;RowDefinition Height="Auto" /&amp;gt;
            &amp;lt;RowDefinition Height="*" /&amp;gt;
            &amp;lt;RowDefinition Height="Auto" /&amp;gt;
        &amp;lt;/Grid.RowDefinitions&amp;gt;
        &amp;lt;Grid.ColumnDefinitions&amp;gt;
            &amp;lt;!-- 
                Left Center Right 
                LeftとRightに必要なだけ幅を指定して、Centerの部分は残り全部。
            --&amp;gt;
            &amp;lt;ColumnDefinition Width="Auto" /&amp;gt;
            &amp;lt;ColumnDefinition Width="*" /&amp;gt;
            &amp;lt;ColumnDefinition Width="Auto" /&amp;gt;
        &amp;lt;/Grid.ColumnDefinitions&amp;gt;
        &amp;lt;Button Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="2" 
                Content="Top"/&amp;gt;
        &amp;lt;Button Grid.Row="0" Grid.Column="0" Grid.RowSpan="2" 
                Content="Left"/&amp;gt;
        &amp;lt;Button Grid.Row="1" Grid.Column="2" 
                Content="Right"/&amp;gt;
        &amp;lt;Button Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="3" 
                Content="Bottom"/&amp;gt;
        &amp;lt;Button Grid.Row="1" Grid.Column="1"
                Content="Centerにあたるボタン"/&amp;gt;
    &amp;lt;/Grid&amp;gt;
&amp;lt;/UserControl&amp;gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;実行してみると、DockPanelっぽくなってる。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/CSilverlightSilverlight2DockPanel_7F3/image.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="267" alt="image" src="http://kazuki.wankuma.com/images/2008/CSilverlightSilverlight2DockPanel_7F3/image_thumb.png" width="388" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;小さくしても大丈夫&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/CSilverlightSilverlight2DockPanel_7F3/image_3.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="144" alt="image" src="http://kazuki.wankuma.com/images/2008/CSilverlightSilverlight2DockPanel_7F3/image_thumb_3.png" width="289" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/146262.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>