<?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>WPF</title><link>http://blogs.wankuma.com/kazuki/category/1528.aspx</link><description>WPF</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][C#]イメージのリスト（いい具合に横並び）</title><link>http://blogs.wankuma.com/kazuki/archive/2008/10/09/158528.aspx</link><pubDate>Thu, 09 Oct 2008 23:19:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/10/09/158528.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/158528.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/10/09/158528.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/158528.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/158528.aspx</trackback:ping><description>&lt;p&gt;Vistaの背景画像選ぶときみたいなリストボックスを作りたいということで、叩き台を作ってみた。後は微調整でいけるのかな？&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/WPFC_147AF/image.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="150" alt="image" src="http://kazuki.wankuma.com/images/2008/WPFC_147AF/image_thumb.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;とりあえずXAMLだけを。&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:ccd61493-eda1-41c8-b094-b5c457f880d8" 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;Window x:Class="WpfImageList.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WpfImageList"
    Title="Window1" Height="300" Width="300" Loaded="Window_Loaded"&amp;gt;
    &amp;lt;Window.Resources&amp;gt;
        &amp;lt;local:ImageSizeConverter x:Key="imageSizeConverter" /&amp;gt;
    &amp;lt;/Window.Resources&amp;gt;
    &amp;lt;Grid&amp;gt;
        &amp;lt;ListBox ItemsSource="{Binding}" ScrollViewer.HorizontalScrollBarVisibility="Disabled"&amp;gt;
            &amp;lt;ListBox.ItemTemplate&amp;gt;
                &amp;lt;DataTemplate&amp;gt;
                    &amp;lt;Image Source="{Binding Converter={StaticResource imageSizeConverter}}"/&amp;gt;
                &amp;lt;/DataTemplate&amp;gt;
            &amp;lt;/ListBox.ItemTemplate&amp;gt;
            &amp;lt;ListBox.ItemsPanel&amp;gt;
                &amp;lt;ItemsPanelTemplate&amp;gt;
                    &amp;lt;WrapPanel ItemHeight="100" ItemWidth="100" /&amp;gt;
                &amp;lt;/ItemsPanelTemplate&amp;gt;
            &amp;lt;/ListBox.ItemsPanel&amp;gt;
        &amp;lt;/ListBox&amp;gt;
    &amp;lt;/Grid&amp;gt;
&amp;lt;/Window&amp;gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;ListBoxのItemTemplateで、ListBoxItemに画像を表示している部分と、ListBoxのItemsPanelで表示にWrapPanelを使ってるのが特徴。横スクロールはイラナイ（というか有るとWrapPanelが横方向に無限に広がるため折り返さない）のでScrollViewer.HorizontalScrollBarVisibility="Disabled"にしている。&lt;/p&gt;
&lt;p&gt;ItemTemplateをもうちょとっと格好良くすればそっくりになるかな？&lt;br&gt;その他の部分については、下記のプロジェクト参照してください。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;iframe style="border-right: #dde5e9 1px solid; padding-right: 0px; border-top: #dde5e9 1px solid; padding-left: 0px; padding-bottom: 0px; margin: 3px; border-left: #dde5e9 1px solid; width: 240px; padding-top: 0px; border-bottom: #dde5e9 1px solid; height: 66px; background-color: #ffffff" marginwidth="0" marginheight="0" src="http://cid-c0989b857f2f850c.skydrive.live.com/embedrowdetail.aspx/%e5%85%ac%e9%96%8b/samples/WpfImageList.zip" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/158528.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[WPF][C#]ListViewの行を交互に色を変える</title><link>http://blogs.wankuma.com/kazuki/archive/2008/10/02/157968.aspx</link><pubDate>Thu, 02 Oct 2008 08:14:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/10/02/157968.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/157968.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/10/02/157968.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/157968.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/157968.aspx</trackback:ping><description>&lt;p&gt;nakamuraさんも同じことをされていたけど、違うアプローチから縞々をしてみようと思う。&lt;br&gt;Nakamura Blog:&lt;a href="http://blogs.wankuma.com/nakamura/archive/2008/10/01/157949.aspx"&gt;ListViewを縞々にする&lt;/a&gt;&lt;/p&gt; &lt;p&gt;やり方は基本的に前にやった&lt;a href="http://blogs.wankuma.com/kazuki/archive/2008/08/15/153169.aspx"&gt;ListBoxの時&lt;/a&gt;と同じ。&lt;br&gt;さくっとしてみよう。&lt;/p&gt; &lt;h1&gt;ListViewに表示するデータの準備&lt;/h1&gt; &lt;p&gt;まず、表示するデータがないと話しにならない。いつもどおりのPersonクラスを作成する。&lt;/p&gt; &lt;p&gt; &lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:a18bf2b4-4860-4c3f-87d9-77b6491a29c4" 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="c#"&gt;namespace WpfApplication4
{
    public class Person
    {
        public int No { get; set; }
        public string Name { get; set; }
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;これをWindowのコンストラクタでDataContextに設定する。&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:5aa16ee9-7f91-4f2d-a4e9-9e4a00e0aae5" 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="c#"&gt;using System.Windows;

namespace WpfApplication4
{
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
            DataContext = new[]
            {
                new Person { No = 1, Name = "田中　太郎" },
                new Person { No = 2, Name = "鈴木　太郎" },
                new Person { No = 3, Name = "田中　次郎" },
                new Person { No = 4, Name = "田中　三郎" },
                new Person { No = 5, Name = "田中　四郎" },
                new Person { No = 6, Name = "田中　五郎" },
                new Person { No = 7, Name = "田中　六郎" },
                new Person { No = 8, Name = "木村さん" },
            };
        }
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;これで準備完了。&lt;/p&gt;
&lt;h1&gt;ListViewにデータを表示する&lt;/h1&gt;
&lt;p&gt;表示のさせ方自体は前にもしてるから、さくっとXAMLだけ紹介。&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:5ed9f93d-45a5-4144-880b-892f967b4df0" 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;Window x:Class="WpfApplication4.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300"&amp;gt;
    &amp;lt;Grid&amp;gt;
        &amp;lt;ListView ItemsSource="{Binding}" AlternationCount="2"&amp;gt;
            &amp;lt;ListView.View&amp;gt;
                &amp;lt;GridView&amp;gt;
                    &amp;lt;GridView.Columns&amp;gt;
                        &amp;lt;GridViewColumn Header="No" DisplayMemberBinding="{Binding No}" /&amp;gt;
                        &amp;lt;GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" /&amp;gt;
                    &amp;lt;/GridView.Columns&amp;gt;
                &amp;lt;/GridView&amp;gt;
            &amp;lt;/ListView.View&amp;gt;
        &amp;lt;/ListView&amp;gt;
    &amp;lt;/Grid&amp;gt;
&amp;lt;/Window&amp;gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/WPFCListView_7396/image.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="158" alt="image" src="http://kazuki.wankuma.com/images/2008/WPFCListView_7396/image_thumb.png" width="244" border="0"&gt;&lt;/a&gt; &lt;br&gt;普通にデータが表示されるようになった。いい感じ。&lt;/p&gt;
&lt;h1&gt;&lt;/h1&gt;
&lt;h1&gt;ついに縞々&lt;/h1&gt;
&lt;p&gt;縞々にするため？に.NET Framework 3.5 SP1から追加されたAlternationCountプロパティをListViewに追加する。縞々なので2を指定した。&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:b13f961b-ffd2-46b4-bc50-20b077b687d7" 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;ListView ItemsSource="{Binding}" AlternationCount="2"&amp;gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;そしてListViewのItemContainerStyleでItemsControl.AlternationIndexでTriggerをかけて背景色を変えるようにする。&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:c328849e-d5e4-41e4-9a75-7827a17c2ada" 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;ListView.ItemContainerStyle&amp;gt;
    &amp;lt;Style TargetType="{x:Type ListViewItem}"&amp;gt;
        &amp;lt;Style.Triggers&amp;gt;
            &amp;lt;!-- 奇数行だけ金色！ --&amp;gt;
            &amp;lt;Trigger Property="ItemsControl.AlternationIndex" Value="0"&amp;gt;
                &amp;lt;Setter Property="Background" Value="Gold" /&amp;gt;
            &amp;lt;/Trigger&amp;gt;
        &amp;lt;/Style.Triggers&amp;gt;
    &amp;lt;/Style&amp;gt;
&amp;lt;/ListView.ItemContainerStyle&amp;gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;実行すると縞々にはなってるが…&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/WPFCListView_7396/image_3.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="179" alt="image" src="http://kazuki.wankuma.com/images/2008/WPFCListView_7396/image_thumb_3.png" width="244" border="0"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;No3の田中　次郎さんの行をマウスで選択しているのにハイライトが非常にわかりにくい。 選択されてるときは、背景色を指定しないように改良してみよう。&lt;br&gt;やりたいこととしては、ItemsControl.AlternationIndexが0で、選択されてない行だけ色を変えたいということなのでMultiTriggerを使ってやってみた。&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:98357ac1-f24e-463d-b263-72d14d4b107d" 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;ListView.ItemContainerStyle&amp;gt;
    &amp;lt;Style TargetType="{x:Type ListViewItem}"&amp;gt;
        &amp;lt;Style.Triggers&amp;gt;
            &amp;lt;MultiTrigger&amp;gt;
                &amp;lt;!-- 奇数行で、選択されてない行は金色!! --&amp;gt;
                &amp;lt;MultiTrigger.Conditions&amp;gt;
                    &amp;lt;Condition Property="ItemsControl.AlternationIndex" Value="0" /&amp;gt;
                    &amp;lt;Condition Property="IsSelected" Value="False" /&amp;gt;
                &amp;lt;/MultiTrigger.Conditions&amp;gt;
                &amp;lt;Setter Property="Background" Value="Gold" /&amp;gt;
            &amp;lt;/MultiTrigger&amp;gt;
        &amp;lt;/Style.Triggers&amp;gt;
    &amp;lt;/Style&amp;gt;
&amp;lt;/ListView.ItemContainerStyle&amp;gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;こうすると、選択行の色は変わらない。でも、これはこれでイマイチかな…。&lt;a href="http://kazuki.wankuma.com/images/2008/WPFCListView_7396/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="230" alt="image" src="http://kazuki.wankuma.com/images/2008/WPFCListView_7396/image_thumb_4.png" width="242" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;選択されてる行でAlternationIndexが0の行にそれっぽい色をつける様なMultiTriggerを設定すれば良さそうだ。早速やってみよう。&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:f2dd2ae8-75fd-4cfc-9647-29003f0b79f3" 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;ListView.ItemContainerStyle&amp;gt;
    &amp;lt;Style TargetType="{x:Type ListViewItem}"&amp;gt;
        &amp;lt;Style.Triggers&amp;gt;
            &amp;lt;!-- 選択されてない奇数行は紫色っぽい色で --&amp;gt;
            &amp;lt;MultiTrigger&amp;gt;
                &amp;lt;MultiTrigger.Conditions&amp;gt;
                    &amp;lt;Condition Property="ItemsControl.AlternationIndex" Value="0" /&amp;gt;
                    &amp;lt;Condition Property="IsSelected" Value="False" /&amp;gt;
                &amp;lt;/MultiTrigger.Conditions&amp;gt;
                &amp;lt;Setter Property="Background" Value="#ffee00ff" /&amp;gt;
            &amp;lt;/MultiTrigger&amp;gt;
            &amp;lt;!-- 選択されてる奇数行は透明っぽい紫色で --&amp;gt;
            &amp;lt;MultiTrigger&amp;gt;
                &amp;lt;MultiTrigger.Conditions&amp;gt;
                    &amp;lt;Condition Property="ItemsControl.AlternationIndex" Value="0" /&amp;gt;
                    &amp;lt;Condition Property="IsSelected" Value="True" /&amp;gt;
                &amp;lt;/MultiTrigger.Conditions&amp;gt;
                &amp;lt;Setter Property="Background" Value="#44ee00ff"/&amp;gt;
            &amp;lt;/MultiTrigger&amp;gt;
        &amp;lt;/Style.Triggers&amp;gt;
    &amp;lt;/Style&amp;gt;
&amp;lt;/ListView.ItemContainerStyle&amp;gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;これで実行するとそれっぽくなってる。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/WPFCListView_7396/image_5.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="192" alt="image" src="http://kazuki.wankuma.com/images/2008/WPFCListView_7396/image_thumb_5.png" width="244" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/157968.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[WPF][C#]Visual Studio 2008 SP1のWPFデザイナの使い方</title><link>http://blogs.wankuma.com/kazuki/archive/2008/10/01/157894.aspx</link><pubDate>Wed, 01 Oct 2008 08:01:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/10/01/157894.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/157894.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/10/01/157894.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/157894.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/157894.aspx</trackback:ping><description>&lt;p&gt;Visual Studio 2005でアドインという形でVisual Studio上でのWPFアプリケーションの開発がサポートされるようになりました。そこからVS2008 → VS2008 SP1とバージョンアップを経てそこそこ使いやすいものになってます。&lt;br&gt;VS2008までは、デザイナ画面を使うといってもプレビュー画面程度にしか使ってませんでした。ほとんどXAMLを手打ち！！という漢らしい方法で開発してました。でも、SP1でデザイナもパワーアップしてWindowsFormで出来ること程度のことが出来る感じになってます。&lt;/p&gt; &lt;p&gt;ということでどんな事が出来るかというと…&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/WPFCVisualStudio2008SP1WPF_709F/image.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="67" alt="image" src="http://kazuki.wankuma.com/images/2008/WPFCVisualStudio2008SP1WPF_709F/image_thumb.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;ツールボックスからドラッグアンドドロップすることで任意の場所にボタンとかを置くことが出来る。コレ位に関してはVS2005のころから出来てたので別に驚くことは無い。&lt;/p&gt; &lt;p&gt;このコントロールをマウスでつかんで画面内の何処に動かすのか移動させることが出来る。その際に、ガイドも出てきてきっちり揃えたレイアウトとかがやりやすくなっている。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/WPFCVisualStudio2008SP1WPF_709F/image_3.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="102" alt="image" src="http://kazuki.wankuma.com/images/2008/WPFCVisualStudio2008SP1WPF_709F/image_thumb_3.png" width="128" border="0"&gt;&lt;/a&gt; &lt;a href="http://kazuki.wankuma.com/images/2008/WPFCVisualStudio2008SP1WPF_709F/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="124" alt="image" src="http://kazuki.wankuma.com/images/2008/WPFCVisualStudio2008SP1WPF_709F/image_thumb_4.png" width="174" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;そして、ウィンドウがサイズ変更されたときにコントロールのサイズをどうするのかということもデザイナで指定できるようになっている。WindowsFormでいうところのAnchorと同じことが出来る。&lt;br&gt;やり方は簡単。デザイナ上でコントロールを選択すると、左側と上側に三角形が表示される。この状態は、WindowsFormでAnchorにTopとLeftを指定したのと同じ動きをする。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/WPFCVisualStudio2008SP1WPF_709F/image_5.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="95" alt="image" src="http://kazuki.wankuma.com/images/2008/WPFCVisualStudio2008SP1WPF_709F/image_thumb_5.png" width="137" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;これにAnchorにRightを設定したのと同じ動きをさせる設定をしようと思う。これは、コントロールの右側に表示されてる丸い部分をクリックすればいい。クリックすると丸から三角に変わる。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/WPFCVisualStudio2008SP1WPF_709F/image_6.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="93" alt="image" src="http://kazuki.wankuma.com/images/2008/WPFCVisualStudio2008SP1WPF_709F/image_thumb_6.png" width="134" border="0"&gt;&lt;/a&gt; &lt;a href="http://kazuki.wankuma.com/images/2008/WPFCVisualStudio2008SP1WPF_709F/image_7.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="72" alt="image" src="http://kazuki.wankuma.com/images/2008/WPFCVisualStudio2008SP1WPF_709F/image_thumb_7.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;これで、ウィンドウサイズを変えるとボタンのサイズも変わるようになる。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/WPFCVisualStudio2008SP1WPF_709F/image_8.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="117" alt="image" src="http://kazuki.wankuma.com/images/2008/WPFCVisualStudio2008SP1WPF_709F/image_thumb_8.png" width="327" border="0"&gt;&lt;/a&gt; &lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/WPFCVisualStudio2008SP1WPF_709F/image_9.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="112" alt="image" src="http://kazuki.wankuma.com/images/2008/WPFCVisualStudio2008SP1WPF_709F/image_thumb_9.png" width="420" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;こんな感じで、裏ではWPFのGridレイアウトの動きとマージンやWidth Heightを駆使しつつWindowsFormと同じような感じで画面デザインが出来るようになっている。WPFの流儀に従ってるかと言われるとう～んどうだろ？って感じもするけど、これで設定したほうが楽な場合もあるので使える部分では使っていこうと思う。&lt;/p&gt; &lt;p&gt;後は、Gridを選択した状態で画面の上と左に表示される青い帯みたいな部分をクリックするとColumnDefinitionとRowDefinitionが設定できるようになっている。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/WPFCVisualStudio2008SP1WPF_709F/image_10.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="181" alt="image" src="http://kazuki.wankuma.com/images/2008/WPFCVisualStudio2008SP1WPF_709F/image_thumb_10.png" width="243" border="0"&gt;&lt;/a&gt; &lt;br&gt;まぁ、WindowsForm的にデザイナでレイアウトしたい！ってときに使う機能かというと微妙な気はする。&lt;/p&gt; &lt;p&gt;最後に、プロパティウィンドウでイベントの設定も出来る。今まで出来なかったのが不思議でならない。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/WPFCVisualStudio2008SP1WPF_709F/image_11.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="244" alt="image" src="http://kazuki.wankuma.com/images/2008/WPFCVisualStudio2008SP1WPF_709F/image_thumb_11.png" width="206" border="0"&gt;&lt;/a&gt; &lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/WPFCVisualStudio2008SP1WPF_709F/image_12.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="79" alt="image" src="http://kazuki.wankuma.com/images/2008/WPFCVisualStudio2008SP1WPF_709F/image_thumb_12.png" width="379" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/157894.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[後で読む][WPF]WPFアプリケーションのローカライズの仕方</title><link>http://blogs.wankuma.com/kazuki/archive/2008/09/28/157681.aspx</link><pubDate>Sun, 28 Sep 2008 20:56:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/09/28/157681.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/157681.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/09/28/157681.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/157681.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/157681.aspx</trackback:ping><description>&lt;p&gt;MSDNの「方法：アプリケーションをローカライズする」&lt;br&gt;&lt;a title="http://msdn.microsoft.com/ja-jp/library/ms746621(VS.80).aspx" href="http://msdn.microsoft.com/ja-jp/library/ms746621(VS.80).aspx"&gt;http://msdn.microsoft.com/ja-jp/library/ms746621(VS.80).aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;ここに、locbamlを使ってWPFアプリケーションをローカライズする方法が書かれてる。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/157681.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[WPF][C#]WebBrowserコントロールは？ その３</title><link>http://blogs.wankuma.com/kazuki/archive/2008/09/28/157671.aspx</link><pubDate>Sun, 28 Sep 2008 17:11:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/09/28/157671.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/157671.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/09/28/157671.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/157671.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/157671.aspx</trackback:ping><description>&lt;p&gt;その２&lt;br&gt;&lt;a title="http://blogs.wankuma.com/kazuki/archive/2008/01/26/119366.aspx" href="http://blogs.wankuma.com/kazuki/archive/2008/01/26/119366.aspx"&gt;http://blogs.wankuma.com/kazuki/archive/2008/01/26/119366.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;ずいぶん前に、WebBrowserコントロールの代わりに、Frameを使うといけた！って書いた。&lt;br&gt;でも、画像を表示しようとすると駄目だったのでションボリといった代物だった。&lt;/p&gt; &lt;p&gt;でも、.NET Framework 3.5/3.0のSP1から正真正銘WebBrowserが追加されたので悩む必要は無い。使い方も簡単で、XAMLでWebBrowserタグを使って画面に置くことが出来る。画面遷移はおなじみのNavigateメソッドでOK。ということで早速軽く試してみたよ。&lt;/p&gt; &lt;p&gt;テキストボックスとボタンとブラウザーを画面に配置。&lt;/p&gt; &lt;p&gt; &lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:60c4edb1-6a65-4602-8e24-5de1ab118811" 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;Window x:Class="WpfAnimationSample.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Browser"&amp;gt;
    &amp;lt;DockPanel&amp;gt;
        &amp;lt;ToolBarTray DockPanel.Dock="Top"&amp;gt;
            &amp;lt;ToolBar&amp;gt;
                &amp;lt;Grid&amp;gt;
                    &amp;lt;Grid.ColumnDefinitions&amp;gt;
                        &amp;lt;ColumnDefinition /&amp;gt;
                        &amp;lt;ColumnDefinition Width="Auto"/&amp;gt;
                    &amp;lt;/Grid.ColumnDefinitions&amp;gt;
                    &amp;lt;TextBox Name="textBoxUrl" MinWidth="250"/&amp;gt;
                    &amp;lt;Button Grid.Column="1" 
                            Name="buttonNavigate"
                            Content="開く" Click="buttonNavigate_Click" /&amp;gt;
                &amp;lt;/Grid&amp;gt;
            &amp;lt;/ToolBar&amp;gt;
        &amp;lt;/ToolBarTray&amp;gt;
        &amp;lt;WebBrowser Name="browser" Navigated="browser_Navigated" /&amp;gt;
    &amp;lt;/DockPanel&amp;gt;
&amp;lt;/Window&amp;gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;ボタンクリックで画面遷移をして、画面遷移完了とともにTextBoxに遷移先のURLを表示するようにしてみた。&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:0011abd1-c452-4c20-80c7-94971999a983" 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="c#"&gt;using System;
using System.Windows;
using System.Windows.Navigation;

namespace WpfAnimationSample
{
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
        }

        private void buttonNavigate_Click(object sender, RoutedEventArgs e)
        {
            browser.Navigate(new Uri(textBoxUrl.Text));
        }

        private void browser_Navigated(object sender, NavigationEventArgs e)
        {
            textBoxUrl.Text = browser.Source.ToString();
        }
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;実行して動きを試してみよう。&lt;br&gt;URLを入力して開くボタンを押すと…&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/WPFCWebBrowser_F197/image.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="159" alt="image" src="http://kazuki.wankuma.com/images/2008/WPFCWebBrowser_F197/image_thumb.png" width="244" border="0"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ばっちり表示される。 &lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/WPFCWebBrowser_F197/image_3.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="159" alt="image" src="http://kazuki.wankuma.com/images/2008/WPFCWebBrowser_F197/image_thumb_3.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;画像自体の表示やPDFとかFlash, SilverlightもOKだ。要はIEで表示できれば大丈夫そう。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/WPFCWebBrowser_F197/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="182" alt="image" src="http://kazuki.wankuma.com/images/2008/WPFCWebBrowser_F197/image_thumb_4.png" width="244" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/157671.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[WPF][C#]WPFのアニメーション その２「XAMLで書いてみよう」</title><link>http://blogs.wankuma.com/kazuki/archive/2008/09/25/157453.aspx</link><pubDate>Thu, 25 Sep 2008 09:44:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/09/25/157453.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/157453.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/09/25/157453.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/157453.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/157453.aspx</trackback:ping><description>&lt;p&gt;&lt;a href="http://blogs.wankuma.com/kazuki/archive/2008/09/24/157418.aspx"&gt;前回&lt;/a&gt;は、C#のコードでアニメーションを組み立てて実行した。実は、これも全てXAMLでかけてしまう。ということで書いてみようと思う。&lt;br&gt;とりあえず、前回のプロジェクトでC#のコードを書く前の段階に戻す。&lt;/p&gt; &lt;p&gt; &lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:0e6d055f-7767-4926-97a1-5f6974b5ad5f" 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;Window x:Class="WpfAnimeStudy.Window1"  
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
    Title="Window1" Height="300" Width="300"&amp;gt;  
    &amp;lt;Canvas&amp;gt;  
        &amp;lt;Rectangle Name="animationTarget"  
                   Canvas.Top="10"    
                   Canvas.Left="10"    
                   Width="100"    
                   Height="100"    
                   Fill="Aqua" /&amp;gt;  
        &amp;lt;Button Canvas.Bottom="10" Canvas.Left="10"&amp;gt;きっかけ！&amp;lt;/Button&amp;gt;  
    &amp;lt;/Canvas&amp;gt;  
&amp;lt;/Window&amp;gt;  
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;ここにStoryboardとDoubleAnimationを追加していく。色々な書き方はあるが、ResourcesにStoryboardを追加してみようと思う。C#のコードで書いていたものをそのままXAML化。&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:2f1855a8-dd19-4608-a63d-26b6064f91e8" 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;Window.Resources&amp;gt;
	&amp;lt;Storyboard x:Key="storyboard"&amp;gt;
		&amp;lt;DoubleAnimation Storyboard.TargetProperty="Width"
						 Storyboard.TargetName="animationTarget"
						 Duration="0:0:10"
						 From="10" To="200" /&amp;gt;
		&amp;lt;DoubleAnimation Storyboard.TargetProperty="Height"
						 Storyboard.TargetName="animationTarget"
						 Duration="0:0:10"
						 From="10" To="200" /&amp;gt;
	&amp;lt;/Storyboard&amp;gt;
&amp;lt;/Window.Resources&amp;gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;コードとちょっと違うのは、Storyboard.TargetNameという添付プロパティを使用しているところかな。&lt;br&gt;この添付プロパティを使うと、アニメーションさせたいターゲットを指定できる。この場合animationTargetという名前のRectangleをアニメーションさせたいので、Storyboard.TargetName=”animationTarget”という風になる。&lt;/p&gt;
&lt;p&gt;最後に、このストーリーボードを開始する処理を書けば完成だ。これもXAMLでいける。クリック時にストーリーボードを起動するにはTriggersプロパティとEventTriggerとBeginStoryboardというものを使う。Triggersプロパティは、FrameworkElementという結構上の階層で定義されてるので、基本的に画面に置くコントロール系には全て備わっているプロパティです。&lt;/p&gt;
&lt;p&gt;StyleやControlTemplate等にも同名のプロパティがあるが、これらはTriggerやDataTriggerやEventTriggerなんかをサポートするけど、FrameworkElement.TriggersではEventTriggerしかサポートしていない。今回の例では、ボタンクリックのイベントが拾えればいいのでEventTriggerが使えればいいので、これを使ってみようと思う。&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:e1c89162-46f0-4ed0-8da8-0914a2f44ff0" 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;Button Canvas.Bottom="10" Canvas.Left="10"&amp;gt;
	&amp;lt;Button.Triggers&amp;gt;
		&amp;lt;EventTrigger RoutedEvent="Button.Click"&amp;gt;
			&amp;lt;BeginStoryboard Storyboard="{StaticResource storyboard}" /&amp;gt;
		&amp;lt;/EventTrigger&amp;gt;
	&amp;lt;/Button.Triggers&amp;gt;
	きっかけ！
&amp;lt;/Button&amp;gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;EventTriggerで、Button.Clickが起きたらResources内のstoryboardを開始するように指定している。&lt;br&gt;これで完成だ。一応XAML全体を以下に示します。&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:5efe3145-b33a-44c9-9a6f-b8b56e534d70" 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;Window x:Class="WpfAnimeStudy.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300"&amp;gt;
	&amp;lt;Window.Resources&amp;gt;
		&amp;lt;Storyboard x:Key="storyboard"&amp;gt;
			&amp;lt;DoubleAnimation Storyboard.TargetProperty="Width"
							 Storyboard.TargetName="animationTarget"
							 Duration="0:0:10"
							 From="10" To="200" /&amp;gt;
			&amp;lt;DoubleAnimation Storyboard.TargetProperty="Height"
							 Storyboard.TargetName="animationTarget"
							 Duration="0:0:10"
							 From="10" To="200" /&amp;gt;
		&amp;lt;/Storyboard&amp;gt;
	&amp;lt;/Window.Resources&amp;gt;
	&amp;lt;Canvas&amp;gt;
		&amp;lt;Rectangle Name="animationTarget"  
                   Canvas.Top="10"    
                   Canvas.Left="10"    
                   Width="100"    
                   Height="100"    
                   Fill="Aqua" /&amp;gt;
		&amp;lt;Button Canvas.Bottom="10" Canvas.Left="10"&amp;gt;
			&amp;lt;Button.Triggers&amp;gt;
				&amp;lt;EventTrigger RoutedEvent="Button.Click"&amp;gt;
					&amp;lt;BeginStoryboard Storyboard="{StaticResource storyboard}" /&amp;gt;
				&amp;lt;/EventTrigger&amp;gt;
			&amp;lt;/Button.Triggers&amp;gt;
			きっかけ！
		&amp;lt;/Button&amp;gt;
	&amp;lt;/Canvas&amp;gt;
&amp;lt;/Window&amp;gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;実行結果は前回と同じなので割愛。&lt;br&gt;以上！&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/157453.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[C#][WPF]WPFのアニメーション その１「コードからの単純なアニメーション」</title><link>http://blogs.wankuma.com/kazuki/archive/2008/09/24/157418.aspx</link><pubDate>Wed, 24 Sep 2008 21:32:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/09/24/157418.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/157418.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/09/24/157418.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/157418.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/157418.aspx</trackback:ping><description>&lt;p&gt;WPFのアニメーションとは、TVアニメみたいな奴じゃなくて指定した時間の間でプロパティの値を変更していくとかいうものをさすらしい。&lt;br&gt;とりあえず色々実験するための下地のアプリケーションを作ってみよう。&lt;/p&gt; &lt;p&gt;WpfAnimeStudyという名前のプロジェクトを新規作成して、Window1.xamlを下のような感じにしてみた。&lt;/p&gt; &lt;p&gt; &lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:fbb1753a-e8fb-4c71-831c-ed768459a6a7" 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;Window x:Class="WpfAnimeStudy.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300"&amp;gt;
    &amp;lt;Canvas&amp;gt;
        &amp;lt;Rectangle Name="animationTarget"
                   Canvas.Top="10" 
                   Canvas.Left="10" 
                   Width="100" 
                   Height="100" 
                   Fill="Aqua" /&amp;gt;
        &amp;lt;Button Canvas.Bottom="10" Canvas.Left="10"&amp;gt;きっかけ！&amp;lt;/Button&amp;gt;
    &amp;lt;/Canvas&amp;gt;
&amp;lt;/Window&amp;gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;この時点では、まだ何も仕込んでないので下のような水色の四角形とボタンが表示されるだけになってる。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/CWPFWPF_12C68/image.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="244" alt="image" src="http://kazuki.wankuma.com/images/2008/CWPFWPF_12C68/image_thumb.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;この四角形をアニメーションを使って色々いじくってみようと思う。とりあえず巨大化させるところからだよね。&lt;br&gt;アニメーションのためのクラスは、&amp;lt;型名&amp;gt;Animationという風にクラス名が統一されている。サイズ指定のためのプロパティのWidthやHeightはDouble型なので、もれなくDoubleAnimationというクラスを使うことになる。&lt;/p&gt;
&lt;p&gt;&amp;lt;型名&amp;gt;Animationという名前のクラスにはFromプロパティとToプロパティが定義されている。Fromにアニメーション開始時の値、Toにアニメーション終了時の値を指定することができる。&lt;br&gt;UIElementクラスには、アニメーションを開始するためのメソッドBeginAnimation(DependencyProperty, AnimationTimeline)というメソッドが用意されている。第一引数にアニメーションさせるプロパティを指定する。第二引数に、アニメーションを指定する。&lt;/p&gt;
&lt;p&gt;ということで、10から200にアニメーションさせるDoubleAnimationを作ってRectangleの横幅をずずずぃ～～っと変更させるコードを書いてみた。&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:1fb29940-8299-4b26-8576-2e4270399728" 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="c#"&gt;using System.Windows;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace WpfAnimeStudy
{
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            // Double型で10から200までアニメーションさせる
            var animation = new DoubleAnimation
            {
                From = 10,
                To = 200
            };
            // そぉぃ
            animationTarget.BeginAnimation(Rectangle.WidthProperty, animation);
        }
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;実行すると...&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/CWPFWPF_12C68/image_3.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="244" alt="image" src="http://kazuki.wankuma.com/images/2008/CWPFWPF_12C68/image_thumb_3.png" width="244" border="0"&gt;&lt;/a&gt; クリック！&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/CWPFWPF_12C68/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="244" alt="image" src="http://kazuki.wankuma.com/images/2008/CWPFWPF_12C68/image_thumb_4.png" width="244" border="0"&gt;&lt;/a&gt; &lt;a href="http://kazuki.wankuma.com/images/2008/CWPFWPF_12C68/image_5.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="244" alt="image" src="http://kazuki.wankuma.com/images/2008/CWPFWPF_12C68/image_thumb_5.png" width="244" border="0"&gt;&lt;/a&gt; &lt;a href="http://kazuki.wankuma.com/images/2008/CWPFWPF_12C68/image_6.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="244" alt="image" src="http://kazuki.wankuma.com/images/2008/CWPFWPF_12C68/image_thumb_6.png" width="244" border="0"&gt;&lt;/a&gt; &lt;a href="http://kazuki.wankuma.com/images/2008/CWPFWPF_12C68/image_7.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="244" alt="image" src="http://kazuki.wankuma.com/images/2008/CWPFWPF_12C68/image_thumb_7.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;静止画じゃ非常にわかりにくいけど、水色の四角形が1秒間かけて幅１０から２００へ広がっている。この1秒というのも任意の値を指定できるようになっている。Durationというプロパティがそれだ。Durationプロパティは、Durationという型で定義されているが、暗黙の型変換でも定義されているのだろう。TimeSpanを指定できるようになっている。とりあえず、10秒かけてアニメーションするようにコードを変更してみた。&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:2d0e7383-8950-4dd1-af43-66d8731e9fe8" 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="c#"&gt;private void Button_Click(object sender, RoutedEventArgs e)
{
    // Double型で10から200までアニメーションさせる
    var animation = new DoubleAnimation
    {
        From = 10,
        To = 200,
        // 10秒間かけてアニメーションしてね！
        Duration = TimeSpan.FromMilliseconds(10000)
    };
    // そぉぃ
    animationTarget.BeginAnimation(Rectangle.WidthProperty, animation);
}
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;実行結果は、じわりじわりと大きくなっていくだけだから、絵では表しにくい…ということで省略だ。&lt;/p&gt;
&lt;h1&gt;ストーリーボード&lt;/h1&gt;
&lt;p&gt;ちなみに、１つ１つのアニメーションを順次BeginAnimationしていくとなると複雑なアニメーションを定義するときに呼び出しがめんどくさいことになる。そういうときのために、複数のアニメーションを１つに取りまとめてくれるストーリーボードなるものがある。&lt;/p&gt;
&lt;p&gt;ストーリーボードは、ChildrenプロパティにTimelineオブジェクトをいっぱい格納できるようになっている。&lt;br&gt;そして、添付プロパティを使って、アニメーションに対して、どのプロパティがターゲットかを教えてあげることができるようになってる。ということで、早速これを使ってWidthとHeightを同時に変化させるアニメーションを定義してみようと思う。&lt;br&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:1ae1e9b0-be70-4c36-841d-5630d99c8618" 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="c#"&gt;private void Button_Click(object sender, RoutedEventArgs e)
{
    var storyboard = new Storyboard();
    // 横幅！
    {
        // Double型で10から200までアニメーションさせる
        var animation = new DoubleAnimation
        {
            From = 10,
            To = 200,
            // 10秒間かけてアニメーションしてね！
            Duration = TimeSpan.FromMilliseconds(10000)
        };
        Storyboard.SetTargetProperty(animation, new PropertyPath("Width"));
        storyboard.Children.Add(animation);
    }

    // 縦幅！
    {
        // Double型で10から200までアニメーションさせる
        var animation = new DoubleAnimation
        {
            From = 10,
            To = 200,
            // 10秒間かけてアニメーションしてね！
            Duration = TimeSpan.FromMilliseconds(10000)
        };
        Storyboard.SetTargetProperty(animation, new PropertyPath("Height"));
        storyboard.Children.Add(animation);
    }
    // そぉぃ
    animationTarget.BeginStoryboard(storyboard);
}
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;ストーリーボードを使用すると、アニメーション開始のメソッドがBeginStoryboardになる。まぁ、些細な変更だけど。ということで実行！&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/CWPFWPF_12C68/image_8.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="244" alt="image" src="http://kazuki.wankuma.com/images/2008/CWPFWPF_12C68/image_thumb_8.png" width="244" border="0"&gt;&lt;/a&gt; この状態からクリックすると…&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/CWPFWPF_12C68/image_9.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="244" alt="image" src="http://kazuki.wankuma.com/images/2008/CWPFWPF_12C68/image_thumb_9.png" width="244" border="0"&gt;&lt;/a&gt; &lt;a href="http://kazuki.wankuma.com/images/2008/CWPFWPF_12C68/image_10.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="244" alt="image" src="http://kazuki.wankuma.com/images/2008/CWPFWPF_12C68/image_thumb_10.png" width="244" border="0"&gt;&lt;/a&gt; &lt;a href="http://kazuki.wankuma.com/images/2008/CWPFWPF_12C68/image_11.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="244" alt="image" src="http://kazuki.wankuma.com/images/2008/CWPFWPF_12C68/image_thumb_11.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;10秒かけてじわじわと大きくなっていく。これがアニメーションの基本っぽい。&lt;/p&gt;
&lt;p&gt;因みに、FromプロパティやToプロパティを省略するとアニメーションの開始時点の値や終了時点の値をプロパティに設定されているデフォルト値に設定できるようになっている。&lt;br&gt;この例でFromを省略すると幅と高さ100から200へのアニメーションになるっていう寸法だ。ふむふむ。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/157418.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[WPF][C#]Styleでの値の設定の優先順位</title><link>http://blogs.wankuma.com/kazuki/archive/2008/09/22/157283.aspx</link><pubDate>Mon, 22 Sep 2008 12:38:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/09/22/157283.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/157283.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/09/22/157283.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/157283.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/157283.aspx</trackback:ping><description>&lt;p&gt;WPFではStyleを使って見た目をごにょごにょ出来る。&lt;br&gt;Triggerとかも使えば、見た目に関するロジックをほとんど全てXAMLで書けてしまうんじゃないんだろうかと思う。&lt;/p&gt; &lt;p&gt;ただ、Styleで値をセットするときに使うSetterは、コントロールで明示的にプロパティを設定してあると効かない。&lt;br&gt; &lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:c596e380-40fe-4649-95fd-06b17edd5db6" 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;Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300"&amp;gt;
	&amp;lt;Window.Resources&amp;gt;
		&amp;lt;!-- カーソルがボタン上に有るか無いかでコンテンツを変えるスタイル --&amp;gt;
		&amp;lt;Style TargetType="Button"&amp;gt;
			&amp;lt;Style.Triggers&amp;gt;
				&amp;lt;Trigger Property="IsMouseOver" Value="True"&amp;gt;
					&amp;lt;Setter Property="Content" Value="Over!" /&amp;gt;
				&amp;lt;/Trigger&amp;gt;
				&amp;lt;Trigger Property="IsMouseOver" Value="False"&amp;gt;
					&amp;lt;Setter Property="Content" Value="Not Over!" /&amp;gt;
				&amp;lt;/Trigger&amp;gt;
			&amp;lt;/Style.Triggers&amp;gt;
		&amp;lt;/Style&amp;gt;
	&amp;lt;/Window.Resources&amp;gt;
	&amp;lt;StackPanel&amp;gt;
		&amp;lt;!-- カーソルがボタン上に有るか無いかでコンテンツが変わる --&amp;gt;
		&amp;lt;Button /&amp;gt;
		&amp;lt;!-- 明示的にコンテンツを指定してるのでスタイルでの上書きはされない --&amp;gt;
		&amp;lt;Button Content="Button Content!"/&amp;gt;
	&amp;lt;/StackPanel&amp;gt;
&amp;lt;/Window&amp;gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;勝手に頭の中でTrigger使った時はTriggerで指定した値が優先だろうと思い込んでたのでメモ。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/157283.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[WPF][C#]MultiBindingとIMultiValueConverter</title><link>http://blogs.wankuma.com/kazuki/archive/2008/09/21/157230.aspx</link><pubDate>Sun, 21 Sep 2008 18:47:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/09/21/157230.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/157230.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/09/21/157230.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/157230.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/157230.aspx</trackback:ping><description>&lt;p&gt;複数項目をまとめて、１つの場所に表示したいときに使えるMultiBindingというものがあるらしい。&lt;br&gt;今まで名前しか知らなかったし、簡単なサンプルを組んでる限り必要性を感じなかった代物です。&lt;/p&gt; &lt;p&gt;まぁ、あるんだし使ってみよう。&lt;br&gt;MultiBindingは、IMultiValueConverterと組み合わせて使う。&lt;br&gt;IMultiValueConverterは、IValueConverterの複数の値版になってる。ConvertとConvertBackメソッドのシグネチャは下のような感じだ。&lt;/p&gt; &lt;p&gt; &lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:12423c5f-7190-4dfb-99c4-7597ce1407f0" 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="c#"&gt;object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;例としてintの値２つをカンマ区切りの文字列に相互変換するIMultiValueConverterの実装は下のようになる。&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:6ab55bd5-a649-4c57-8ba9-77d06474d407" 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="c#"&gt;using System;
using System.Windows.Data;

namespace WpfMultiBindingSample
{
    public class IntArrayToStringConverter : IMultiValueConverter
    {
        // [10,20] -&amp;gt; "10,20"
        public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            int x = (int)values[0];
            int y = (int)values[1];
            return string.Format("{0},{1}", x, y);
        }

        // "10,20" -&amp;gt; [10,20]
        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
        {
            string text = value.ToString();
            string[] values = text.Split(',');
            return new object[] { int.Parse(values[0]), int.Parse(values[1]) };
        }
    }
}
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;これを実際に使ってみよう。int型のプロパティを２つ持つMyPointクラスを定義してみた。&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:33d99b78-40fd-439a-abec-4c68e1d91eb7" 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="c#"&gt;
namespace WpfMultiBindingSample
{
    public class MyPoint
    {
        public int X { get; set; }
        public int Y { get; set; }
    }
}
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;コンバータとMyPointをWindow.Resourcesに登録して、MyPointはWindow.DataContextに設定する。&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:561b9190-3fbd-4be0-b101-3a2e253c0766" 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;Window x:Class="WpfMultiBindingSample.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WpfMultiBindingSample"
    Title="Window1" Height="300" Width="300" DataContext="{DynamicResource myPoint}"&amp;gt;
    &amp;lt;Window.Resources&amp;gt;
        &amp;lt;local:MyPoint x:Key="myPoint" X="10" Y="20" /&amp;gt;
        &amp;lt;local:IntArrayToStringConverter x:Key="myConverter" /&amp;gt;
    &amp;lt;/Window.Resources&amp;gt;
&amp;lt;/Window&amp;gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;プロパティには、適当に10と20を設定しておいた。さて、このMyPointをTextBoxのTextにバインドしてみようと思う。単純なBindingだとTextBoxを２つ用意して各々XとYプロパティを表示する形になるけど、MultiBindingを使えば1つのTextBoxにXとYプロパティをバインドできる。&lt;br&gt;そのとき、どのような形で表示するかをConverterプロパティで指定出来る。早速さっき作ったConverterの使いどころだ。&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:d0ac190d-6d6a-460d-92be-d7d3dee2f191" 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;Window x:Class="WpfMultiBindingSample.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WpfMultiBindingSample"
    Title="Window1" Height="300" Width="300" DataContext="{DynamicResource myPoint}"&amp;gt;
    &amp;lt;Window.Resources&amp;gt;
        &amp;lt;local:MyPoint x:Key="myPoint" X="10" Y="20" /&amp;gt;
        &amp;lt;local:IntArrayToStringConverter x:Key="myConverter" /&amp;gt;
    &amp;lt;/Window.Resources&amp;gt;
    &amp;lt;StackPanel&amp;gt;
        &amp;lt;TextBox&amp;gt;
            &amp;lt;TextBox.Text&amp;gt;
                &amp;lt;MultiBinding Converter="{StaticResource myConverter}"&amp;gt;
                    &amp;lt;Binding Path="X" /&amp;gt;
                    &amp;lt;Binding Path="Y" /&amp;gt;
                &amp;lt;/MultiBinding&amp;gt;
            &amp;lt;/TextBox.Text&amp;gt;
        &amp;lt;/TextBox&amp;gt;
        &amp;lt;Button Content="Click" Click="Button_Click" /&amp;gt;
    &amp;lt;/StackPanel&amp;gt;
&amp;lt;/Window&amp;gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Button_Clickでは、myPointの値をMessageBoxで表示するようにしてみた。これで編集結果がちゃんと反映されているか確認できるって寸法だ。&lt;/p&gt;
&lt;p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:4790a9b5-aaff-4f6e-b1b1-f150855774f0" 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="c#"&gt;using System.Windows;

namespace WpfMultiBindingSample
{
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            var myPoint = (MyPoint)FindResource("myPoint");
            MessageBox.Show(string.Format("({0},{1})", myPoint.X, myPoint.Y));
        }
    }
}
&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;早速実行！！実行直後はTextBoxに10,20と表示されている。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/04/WPFCMultiBindingIMultiValueConverter_103F7/image.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="132" alt="image" src="http://kazuki.wankuma.com/images/2008/04/WPFCMultiBindingIMultiValueConverter_103F7/image_thumb.png" width="176" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;これを100,40に書き換えてボタンをぽちっとな。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/04/WPFCMultiBindingIMultiValueConverter_103F7/image_3.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="135" alt="image" src="http://kazuki.wankuma.com/images/2008/04/WPFCMultiBindingIMultiValueConverter_103F7/image_thumb_3.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;ばっちり！！&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/157230.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuki@wankuma.com (かずき)</dc:creator><title>[WPF][C#]デフォルトのボタンとキャンセルボタン</title><link>http://blogs.wankuma.com/kazuki/archive/2008/09/15/156573.aspx</link><pubDate>Mon, 15 Sep 2008 20:54:00 GMT</pubDate><guid>http://blogs.wankuma.com/kazuki/archive/2008/09/15/156573.aspx</guid><wfw:comment>http://blogs.wankuma.com/kazuki/comments/156573.aspx</wfw:comment><comments>http://blogs.wankuma.com/kazuki/archive/2008/09/15/156573.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kazuki/comments/commentRss/156573.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kazuki/services/trackbacks/156573.aspx</trackback:ping><description>&lt;p&gt;皆大好きButtonコントロール。アプリを開発したことがある人なら、おそらく一度はボタンというものを使ったことがあるはずと言っても過言ではない、とっても一般的なコントロールの１つである。&lt;/p&gt; &lt;p&gt;さて、ボタンというものにはEnterキーを押されたときにクリックイベントを発行するデフォルトのボタンと、Escキーを押されたときにクリックイベントを発行するキャンセルボタンがある。Windows Formアプリケーションでは、Formに、デフォルトのボタンをキャンセルボタンを設定するプロパティがあった。（と記憶している）&lt;br&gt;WPFでは、ボタン自身にこのプロパティが移動している。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;デフォルトのボタンとキャンセルボタンに関するButtonのプロパティ&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;IsDefaultプロパティ&lt;br&gt;TrueにするとEnterキーを押したときにクリックイベントが走る  &lt;li&gt;IsCancelプロパティ&lt;br&gt;TrieにするとEnterキーを押したときにクリックイベントが走る&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;ということで実験。テキストフィールド１つとボタン２つを置いて、一方のボタンをデフォルトのボタン、もう一方のボタンをキャンセルボタンにしてみた。&lt;br&gt;各々のボタンのクリックイベントで、押されたボタンがわかるようなメッセージボックスを表示するようにしてみた。&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:8667a9ea-be70-4f5c-ad92-192b80eb0db8" 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;Window x:Class="WpfButton.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300"&amp;gt;
    &amp;lt;StackPanel&amp;gt;
        &amp;lt;TextBox /&amp;gt;
        &amp;lt;!-- デフォルトのボタン(Enterでクリック) --&amp;gt;
        &amp;lt;Button Name="button1" Content="Default Button" IsDefault="True" Click="button1_Click" /&amp;gt;
        &amp;lt;!-- キャンセルボタン(Escでクリック) --&amp;gt;
        &amp;lt;Button Name="button2" Content="Cancel Button" IsCancel="True" Click="button2_Click" /&amp;gt;
    &amp;lt;/StackPanel&amp;gt;
&amp;lt;/Window&amp;gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:79b55398-c025-4301-b277-bfc69d7cb66d" 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="c#"&gt;using System.Windows;

namespace WpfButton
{
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("Default Button Click!!");
        }

        private void button2_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("Cancel Button Click!!");
        }

    }
}
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;早速実行！ 
&lt;p&gt;テキストボックスにフォーカスがある状態でEnterキーを押すとbutton1のクリックイベントが走る。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/04/WPFC_118DE/image.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="111" alt="image" src="http://kazuki.wankuma.com/images/2008/04/WPFC_118DE/image_thumb.png" width="244" border="0"&gt;&lt;/a&gt; &lt;br&gt;&lt;/p&gt;
&lt;p&gt;テキストボックスにフォーカスがある状態でEscキーを押すとbutton2のクリックイベントが走る。&lt;br&gt;&lt;a href="http://kazuki.wankuma.com/images/2008/04/WPFC_118DE/image_3.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="112" alt="image" src="http://kazuki.wankuma.com/images/2008/04/WPFC_118DE/image_thumb_3.png" width="244" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kazuki/aggbug/156573.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>