<?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/kzt/category/2039.aspx</link><description>Windows Presentation Foundationに関するエントリ</description><managingEditor>kazuto</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>kazuto</dc:creator><title>[WPF][Silverlight]XAML入門</title><link>http://blogs.wankuma.com/kzt/archive/2010/04/28/188493.aspx</link><pubDate>Wed, 28 Apr 2010 12:33:00 GMT</pubDate><guid>http://blogs.wankuma.com/kzt/archive/2010/04/28/188493.aspx</guid><wfw:comment>http://blogs.wankuma.com/kzt/comments/188493.aspx</wfw:comment><comments>http://blogs.wankuma.com/kzt/archive/2010/04/28/188493.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kzt/comments/commentRss/188493.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kzt/services/trackbacks/188493.aspx</trackback:ping><description>以前にWPF入門としてXAMLの内容を書きましたが、XAML入門編として書き直しました。&lt;br&gt;
&lt;br&gt;
&lt;a href="http://d.hatena.ne.jp/kazutoex/archive?word=XAML%C6%FE%CC%E7"&gt;続きを読む&lt;/a&gt;&lt;img src ="http://blogs.wankuma.com/kzt/aggbug/188493.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuto</dc:creator><title>[WFP]Adornerは使える１</title><link>http://blogs.wankuma.com/kzt/archive/2010/04/07/187767.aspx</link><pubDate>Wed, 07 Apr 2010 13:05:00 GMT</pubDate><guid>http://blogs.wankuma.com/kzt/archive/2010/04/07/187767.aspx</guid><wfw:comment>http://blogs.wankuma.com/kzt/comments/187767.aspx</wfw:comment><comments>http://blogs.wankuma.com/kzt/archive/2010/04/07/187767.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kzt/comments/commentRss/187767.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kzt/services/trackbacks/187767.aspx</trackback:ping><description>&lt;p&gt;&lt;a href="http://msdn.microsoft.com/ja-jp/library/system.windows.documents.adorner.aspx" target="_blank"&gt;System.Windows.Documents.Adorner&lt;/a&gt;クラスはUIElementを装飾する為に使用するクラスとMSDNで説明されていますが、装飾を実現可能とする機構を上手く利用すると装飾としてではない実装も色々出来ます。&lt;/p&gt;
&lt;a href="http://d.hatena.ne.jp/kazutoex/20100407"&gt;続きを読む&lt;/a&gt;&lt;img src ="http://blogs.wankuma.com/kzt/aggbug/187767.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuto</dc:creator><title>[WPF][雑記] MCTS 70-502を受けてきました</title><link>http://blogs.wankuma.com/kzt/archive/2009/05/15/173038.aspx</link><pubDate>Fri, 15 May 2009 13:54:00 GMT</pubDate><guid>http://blogs.wankuma.com/kzt/archive/2009/05/15/173038.aspx</guid><wfw:comment>http://blogs.wankuma.com/kzt/comments/173038.aspx</wfw:comment><comments>http://blogs.wankuma.com/kzt/archive/2009/05/15/173038.aspx#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kzt/comments/commentRss/173038.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kzt/services/trackbacks/173038.aspx</trackback:ping><description>VisualStudio2008関連のMCTSを初めて受験し、無事合格しました。&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;
&lt;li&gt; MCTS: .NET Framework 3.5, Windows Presentation Foundation アプリケーション&lt;/li&gt;
&lt;/ul&gt;
WPFはまったく仕事ではご縁のない状態ですが、WPFを初めて見たときから「カッコイイ！！」と感じコツコツと勉強していました。&lt;br&gt;
どれ位力がついたか知る為にも良いかなと思い、又今ならMPVの方のバウチャーチケット（Rさんのを使わせて頂きました m(_  _)m )で割引が利くのでチャレンジしてきました。&lt;br&gt;
&lt;br&gt;
受けてみた感想は、ClickOnceの出題が多く出た感じがしますが、浅く広～くな感じで良いバランスで出題されていた感じがします。&lt;br&gt;
今回は言語の選択でC#を選択したのですが、途中VBのコードが出てきました（^^;&lt;br&gt;
かずきさんのブログでも以前書かれていたので、出るかな～とワクワクしていたらちゃんと出てきましたｗ&lt;br&gt;
&lt;br&gt;
今回自分の勉強方法は、入門的な書籍をまず始め、そこからMSDN、Selｆ-Paced、Pro WPF 2008を一通り勉強をしました。&lt;br&gt;
一番効果的だったと感じたのは、勉強した事をわんくまブログでエントリしていく事だったと思います。エントリ数少ないですが・・・(^^;&lt;br&gt;
&lt;br&gt;
覚えた事をエントリする為に一度コーディングし、動作確認を行ってソースコードを転記する。&lt;br&gt;
その一連の事が一番力がついたように感じます。&lt;br&gt;
&lt;br&gt;
英単語を覚えるには電子辞書ではなく辞書を開く。漢字を覚えるには手で書く。と同じように、コードを繰り返し書くのが一番の学習方法だなと今回改めて感じました。&lt;br&gt;
そういった意味で、ブログを使った勉強ってかなり効果が高く感じます。&lt;br&gt;
またブログを通じて技術情報のやり取りも行えますし、間違いなどのフィードバックを頂けたりと技術向上にも非常に良いと思います。&lt;br&gt;
&lt;br&gt;
是非ブログを使って勉強をしてみては如何でしょうか？&lt;br&gt;
&lt;br&gt;
また、プログラムは楽しんでナンボだとも感じました。&lt;br&gt;
先に書いたように、仕事ではWPFを使ったことはないのですが、単純に「作っていて楽しい！」って感覚がとても大切ですね。&lt;br&gt;
その楽しいって感じのお陰で、覚えることが沢山あるWPFの勉強も苦に感じていません。&lt;br&gt;
いつかWPFの開発を仕事でやってみたいな・・。&lt;br&gt;
&lt;br&gt;
MSTCの取得に甘んじず、今後も情報を発信していきたいと思います。&lt;br&gt;
&lt;br&gt;
とりあえず自分におめでとう。&lt;br&gt;
&lt;br&gt;&lt;img src ="http://blogs.wankuma.com/kzt/aggbug/173038.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuto</dc:creator><title>[WPF][Silverlight] RadioButtonの排他的同期が正しく行われない</title><link>http://blogs.wankuma.com/kzt/archive/2009/05/11/172787.aspx</link><pubDate>Mon, 11 May 2009 15:05:00 GMT</pubDate><guid>http://blogs.wankuma.com/kzt/archive/2009/05/11/172787.aspx</guid><wfw:comment>http://blogs.wankuma.com/kzt/comments/172787.aspx</wfw:comment><comments>http://blogs.wankuma.com/kzt/archive/2009/05/11/172787.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kzt/comments/commentRss/172787.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kzt/services/trackbacks/172787.aspx</trackback:ping><description>最近ホームページの作成でSilverlight2を少し触り始めたのですが、WPFとの違いに悪戦苦闘してます。&lt;br&gt;
WPFに比べて最低限の機能以外サポートがされていないSilverlight2ですが、動作上困ったことが多々ありますね・・・。&lt;br&gt;
例えば、ItemsControlを使用し、ItemTemplateにRadioButtonを使用すると、きちんと親コンテナを認識してくれません。&lt;br&gt;
&lt;br&gt;
- Page.xaml -&lt;br&gt;
&lt;div class="code"&gt;
&lt;div style="font-family: メイリオ; font-size: 8pt; color: black; background: white;"&gt;
&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;UserControl&lt;/span&gt;&lt;span style="color: red;"&gt; x&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;Class&lt;/span&gt;&lt;span style="color: blue;"&gt;="SilverlightApplication1.Page"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt; 
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;x&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt; 
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; Width&lt;/span&gt;&lt;span style="color: blue;"&gt;="400"&lt;/span&gt;&lt;span style="color: red;"&gt; Height&lt;/span&gt;&lt;span style="color: blue;"&gt;="300"&lt;/span&gt;&lt;span style="color: red;"&gt; Loaded&lt;/span&gt;&lt;span style="color: blue;"&gt;="UserControl_Loaded"&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Grid&lt;/span&gt;&lt;span style="color: red;"&gt; x&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;Name&lt;/span&gt;&lt;span style="color: blue;"&gt;="LayoutRoot"&lt;/span&gt;&lt;span style="color: red;"&gt; Background&lt;/span&gt;&lt;span style="color: blue;"&gt;="White"&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;ItemsControl&lt;/span&gt;&lt;span style="color: red;"&gt; ItemsSource&lt;/span&gt;&lt;span style="color: blue;"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Binding&lt;/span&gt;&lt;span style="color: blue;"&gt;}"&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;ItemsControl.ItemsPanel&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;ItemsPanelTemplate&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color: blue;"&gt; /&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;ItemsPanelTemplate&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;ItemsControl.ItemsPanel&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;ItemsControl.ItemTemplate&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;RadioButton&lt;/span&gt;&lt;span style="color: red;"&gt; Content&lt;/span&gt;&lt;span style="color: blue;"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Binding&lt;/span&gt;&lt;span style="color: blue;"&gt;}"/&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;ItemsControl.ItemTemplate&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;ItemsControl&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Grid&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;UserControl&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
- Page.xank,cs -&lt;br&gt;
&lt;div class="code"&gt;
&lt;div style="font-family: メイリオ; font-size: 8pt; color: black; background: white;"&gt;
&lt;span style="color: blue;"&gt;namespace&lt;/span&gt; SilverlightApplication1
&lt;br&gt;{
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;partial&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Page&lt;/span&gt; : &lt;span style="color: #2b91af;"&gt;UserControl&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; Page()
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeComponent();
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; UserControl_Loaded(&lt;span style="color: blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af;"&gt;RoutedEventArgs&lt;/span&gt; e)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; DataContext = Items;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt; items;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt; Items
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;get&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (items == &lt;span style="color: blue;"&gt;null&lt;/span&gt;)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; items = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt;(&lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt;[] { &lt;span style="color: #a31515;"&gt;"Item1"&lt;/span&gt;, &lt;span style="color: #a31515;"&gt;"Item2"&lt;/span&gt;, &lt;span style="color: #a31515;"&gt;"Item3"&lt;/span&gt;, &lt;span style="color: #a31515;"&gt;"Item4"&lt;/span&gt;, &lt;span style="color: #a31515;"&gt;"Item5"&lt;/span&gt; });
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; items;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;}
&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
こんな感じで文字列のリストをItemsControlにバインドさせ、ItemTemplateにRadioButtonを指定するとSilverlight2ではRadioButtonのチェックの排他的同期が行われません。&lt;br&gt;
&lt;br&gt;
&lt;img src="http://kzt.wankuma.com/site/special/2009/05/20090511_1.jpg" /&gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
DataTemplateで指定したRadioButtonのGroupNameプロパティを指定してみても駄目です。&lt;br&gt;
WPFではきちんと排他的同期処理が行われます。&lt;br&gt;
どうもSilverlight2では１階層上の親コンテナ内でしか排他的同期が適用されないみたいな感じです。&lt;br&gt;
&lt;br&gt;
実際こんな感じのXAMLを作ってみても同様な結果になります。&lt;br&gt;
&lt;br&gt;
- XAML -&lt;br&gt;
&lt;div class="code"&gt;
&lt;div style="font-family: メイリオ; font-size: 8pt; color: black; background: white;"&gt;
&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;UserControl&lt;/span&gt;&lt;span style="color: red;"&gt; x&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;Class&lt;/span&gt;&lt;span style="color: blue;"&gt;="SilverlightApplication1.Page"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt; 
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;x&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt; 
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; Width&lt;/span&gt;&lt;span style="color: blue;"&gt;="400"&lt;/span&gt;&lt;span style="color: red;"&gt; Height&lt;/span&gt;&lt;span style="color: blue;"&gt;="300"&lt;/span&gt;&lt;span style="color: red;"&gt; Loaded&lt;/span&gt;&lt;span style="color: blue;"&gt;="UserControl_Loaded"&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Grid&lt;/span&gt;&lt;span style="color: red;"&gt; x&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;Name&lt;/span&gt;&lt;span style="color: blue;"&gt;="LayoutRoot"&lt;/span&gt;&lt;span style="color: red;"&gt; Background&lt;/span&gt;&lt;span style="color: blue;"&gt;="White"&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;ContentPresenter&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;RadioButton&lt;/span&gt;&lt;span style="color: red;"&gt; Content&lt;/span&gt;&lt;span style="color: blue;"&gt;="Item1" /&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;ContentPresenter&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;ContentPresenter&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;RadioButton&lt;/span&gt;&lt;span style="color: red;"&gt; Content&lt;/span&gt;&lt;span style="color: blue;"&gt;="Item2" /&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;ContentPresenter&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;ContentPresenter&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;RadioButton&lt;/span&gt;&lt;span style="color: red;"&gt; Content&lt;/span&gt;&lt;span style="color: blue;"&gt;="Item3" /&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;ContentPresenter&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;ContentPresenter&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;RadioButton&lt;/span&gt;&lt;span style="color: red;"&gt; Content&lt;/span&gt;&lt;span style="color: blue;"&gt;="Item4" /&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;ContentPresenter&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;ContentPresenter&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;RadioButton&lt;/span&gt;&lt;span style="color: red;"&gt; Content&lt;/span&gt;&lt;span style="color: blue;"&gt;="Item5" /&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;ContentPresenter&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Grid&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;UserControl&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
WPFでは出来ませんが、Silverlight2ではContentPresenterはダイレクト指定が行えます。&lt;br&gt;
なぜContentPresenterを使用しているかと言いますと、DataTemplateを使用すると展開されるコンテンツはContentPresenter内に動的に作成されます（かなり説明をはしょってます）。&lt;br&gt;
よって上記のItemsControlのItemTemplateで指定したRadioButtonは上記の直接ContentPresenter内にRadioButtonを記述しているXAMLと同様の構成になります。&lt;br&gt;
&lt;br&gt;
実際はRadioButtonの直接の親要素がContentPresenterになってしまうからRadioButton間の同期が行われないのでしょうかね？&lt;br&gt;
これって実際凄く不便だと思います。&lt;br&gt;
例えばアコーディオンコントロールなどのパネル系コントロールを作成しようとした場合、展開されるアイテムグループを常にひとつにしたい場合、RadioButtonコントロールを内部的に使用することがあるかと思いますが、この動作では排他的同期処理が正しく行われない為にRadioButtonコントロールのチェック状態を自分で管理しないといけません。&lt;br&gt;
DataTemplateによって要素の展開が行えるまで出来るのであれば、そのチェックの同期処理位おこなって欲しいですね・・。&lt;br&gt;
&lt;br&gt;
いまいち使いづらいです。Silverlight2。&lt;br&gt;&lt;img src ="http://blogs.wankuma.com/kzt/aggbug/172787.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuto</dc:creator><title>[WPF] WPF入門 ～コントロール [TextBox]～ </title><link>http://blogs.wankuma.com/kzt/archive/2009/04/29/172267.aspx</link><pubDate>Wed, 29 Apr 2009 14:52:00 GMT</pubDate><guid>http://blogs.wankuma.com/kzt/archive/2009/04/29/172267.aspx</guid><wfw:comment>http://blogs.wankuma.com/kzt/comments/172267.aspx</wfw:comment><comments>http://blogs.wankuma.com/kzt/archive/2009/04/29/172267.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kzt/comments/commentRss/172267.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kzt/services/trackbacks/172267.aspx</trackback:ping><description>今回は&lt;a href="http://msdn.microsoft.com/ja-jp/library/system.windows.controls.textbox.aspx" target="_blank"&gt;TextBox&lt;/a&gt;（System.Windows.Controls.TextBox）です。&lt;br&gt;
まずはMSDNの説明をみてみましょう。&lt;br&gt;
&lt;br&gt;
&lt;div class="excerpt"&gt;
書式なしテキストの表示や編集に使用できるコントロールを表します。
&lt;/div&gt;
&lt;br&gt;
TextBoxコントロールはお馴染みのコントロールかと思います。&lt;br&gt;
MSDNの説明の通り、基本的な文字列の編集が行えるコントロールです。&lt;br&gt;
また、テキストのコピー・カット・選択や複数行表示なども行えます。&lt;br&gt;
まずはTextBoxの簡単な使用例を見てみましょう。&lt;br&gt;
&lt;br&gt;
- XAML -&lt;br&gt;
&lt;div class="code"&gt;
&lt;div style="font-family: メイリオ; font-size: 8pt; color: black; background: white;"&gt;
&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Window&lt;/span&gt;&lt;span style="color: red;"&gt; x&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;Class&lt;/span&gt;&lt;span style="color: blue;"&gt;="Window1"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;x&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; Title&lt;/span&gt;&lt;span style="color: blue;"&gt;="Window1"&lt;/span&gt;&lt;span style="color: red;"&gt; Background&lt;/span&gt;&lt;span style="color: blue;"&gt;="DarkBlue"&lt;/span&gt;&lt;span style="color: red;"&gt; Width&lt;/span&gt;&lt;span style="color: blue;"&gt;="150"&lt;/span&gt;&lt;span style="color: red;"&gt; Height&lt;/span&gt;&lt;span style="color: blue;"&gt;="150"&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green;"&gt;&amp;lt;!-- &amp;#12503;&amp;#12525;&amp;#12497;&amp;#12486;&amp;#12451;&amp;#20351;&amp;#29992; --&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;TextBox&lt;/span&gt;&lt;span style="color: red;"&gt; Margin&lt;/span&gt;&lt;span style="color: blue;"&gt;="5"&lt;/span&gt;&lt;span style="color: red;"&gt; Text&lt;/span&gt;&lt;span style="color: blue;"&gt;="Sample Text" /&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green;"&gt;&amp;lt;!-- &amp;#12467;&amp;#12531;&amp;#12486;&amp;#12531;&amp;#12484;&amp;#12503;&amp;#12525;&amp;#12497;&amp;#12486;&amp;#12451;&amp;#20351;&amp;#29992; --&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;TextBox&lt;/span&gt;&lt;span style="color: red;"&gt; Margin&lt;/span&gt;&lt;span style="color: blue;"&gt;="5"&amp;gt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Sample Text&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;TextBox&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Window&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;img src="http://kzt.wankuma.com/site/special/2009/04/TextBox_1.jpg" /&gt;&lt;br&gt;
&lt;br&gt;
上記の例で分かるとおりに、TextBoxコントロールは&lt;a href="http://msdn.microsoft.com/ja-jp/library/system.windows.controls.textbox.text.aspx" target="_blank"&gt;Text&lt;/a&gt;プロパティを使用してテキストの操作を行います。&lt;br&gt;
また、TextBoxコントロールのコンテンツプロパティはTextプロパティが指定されている為、コンテンツプロパティに指定出来るのは文字列のみになります。よって他のコントロールなどを子要素にする事は出来ません。&lt;br&gt;
&lt;br&gt;
TextBoxコントロールは既定で改行を行わないようになっています。&lt;br&gt;
テキストの改行を行いたい場合は&lt;a href="http://msdn.microsoft.com/ja-jp/library/system.windows.controls.textbox.textwrapping.aspx" target="_blank"&gt;TextWrapping&lt;/a&gt;プロパティを使用します。&lt;br&gt;
改行を行う例を見てみましょう。&lt;br&gt;
&lt;br&gt;
- XAML -&lt;br&gt;
&lt;div class="code"&gt;
&lt;div style="font-family: メイリオ; font-size: 8pt; color: black; background: white;"&gt;
&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Window&lt;/span&gt;&lt;span style="color: red;"&gt; x&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;Class&lt;/span&gt;&lt;span style="color: blue;"&gt;="Window1"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;x&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; Title&lt;/span&gt;&lt;span style="color: blue;"&gt;="Window1"&lt;/span&gt;&lt;span style="color: red;"&gt; Background&lt;/span&gt;&lt;span style="color: blue;"&gt;="DarkBlue"&lt;/span&gt;&lt;span style="color: red;"&gt; SizeToContent&lt;/span&gt;&lt;span style="color: blue;"&gt;="WidthAndHeight"&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;TextBox&lt;/span&gt;&lt;span style="color: red;"&gt; Margin&lt;/span&gt;&lt;span style="color: blue;"&gt;="5"&lt;/span&gt;&lt;span style="color: red;"&gt; Width&lt;/span&gt;&lt;span style="color: blue;"&gt;="100"&lt;/span&gt;&lt;span style="color: red;"&gt; TextWrapping&lt;/span&gt;&lt;span style="color: blue;"&gt;="NoWrap"&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#25913;&amp;#34892;&amp;#12394;&amp;#12375; ABCDEFGHIJKLMNOPQRSTUVWXYZ&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;TextBox&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;TextBox&lt;/span&gt;&lt;span style="color: red;"&gt; Margin&lt;/span&gt;&lt;span style="color: blue;"&gt;="5"&lt;/span&gt;&lt;span style="color: red;"&gt; Width&lt;/span&gt;&lt;span style="color: blue;"&gt;="100"&lt;/span&gt;&lt;span style="color: red;"&gt; Height&lt;/span&gt;&lt;span style="color: blue;"&gt;="40"&lt;/span&gt;&lt;span style="color: red;"&gt; TextWrapping&lt;/span&gt;&lt;span style="color: blue;"&gt;="Wrap" &amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#25913;&amp;#34892;&amp;#12354;&amp;#12426; ABCDEFGHIJKLMNOPQRSTUVWXYZ&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;TextBox&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;TextBox&lt;/span&gt;&lt;span style="color: red;"&gt; Margin&lt;/span&gt;&lt;span style="color: blue;"&gt;="5"&lt;/span&gt;&lt;span style="color: red;"&gt; Width&lt;/span&gt;&lt;span style="color: blue;"&gt;="100"&lt;/span&gt;&lt;span style="color: red;"&gt; Height&lt;/span&gt;&lt;span style="color: blue;"&gt;="40"&lt;/span&gt;&lt;span style="color: red;"&gt; TextWrapping&lt;/span&gt;&lt;span style="color: blue;"&gt;="WrapWithOverflow" &amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#25913;&amp;#34892;&amp;#12354;&amp;#12426; ABCDEFGHIJKLMNOPQRSTUVWXYZ&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;TextBox&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Window&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;img src="http://kzt.wankuma.com/site/special/2009/04/TextBox_2.jpg" /&gt;&lt;br&gt;
&lt;br&gt;
このようにTextWrappingプロパティを使用する事によって改行をする事が出来ます。&lt;br&gt;
TextWappingプロパティの動作詳細についてはMSDNでとても分かりやすい物がありますので、そちらを参考にして下さい。&lt;br&gt;
&lt;br&gt;
「&lt;a href="http://msdn.microsoft.com/ja-jp/library/cc294640.aspx" target="_blank"&gt;テキスト折り返しの設定&lt;/a&gt;」&lt;br&gt;
&lt;br&gt;
最後にTextBoxコントロールを使用する上でのワンポイントです。&lt;br&gt;
TextBoxコントロールのコントロールサイズは基本的に設定されているフォントサイズと、Textプロパティに設定されている文字列によって決定されます。&lt;br&gt;
よって同一のテキストでもフォントサイズが異なるだけでサイズが異なります。&lt;br&gt;
&lt;br&gt;
&lt;img src="http://kzt.wankuma.com/site/special/2009/04/TextBox_3.jpg" /&gt;&lt;br&gt;
&lt;br&gt;
この特性を知らないと、Gridコントロールなど配置した要素がストレッチされるレイアウトコントロールを使用する場合、レイアウトが正しく作れない事があります。&lt;br&gt;
そのGridコントロールを使用した例を見てみましょう。&lt;br&gt;
&lt;br&gt;
- XAML -&lt;br&gt;
&lt;div class="code"&gt;
&lt;div style="font-family: メイリオ; font-size: 8pt; color: black; background: white;"&gt;
&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Window&lt;/span&gt;&lt;span style="color: red;"&gt; x&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;Class&lt;/span&gt;&lt;span style="color: blue;"&gt;="Window1"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;x&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; Title&lt;/span&gt;&lt;span style="color: blue;"&gt;="Window1"&lt;/span&gt;&lt;span style="color: red;"&gt; SizeToContent&lt;/span&gt;&lt;span style="color: blue;"&gt;="WidthAndHeight"&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Grid&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;ColumnDefinition&lt;/span&gt;&lt;span style="color: blue;"&gt; /&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;ColumnDefinition&lt;/span&gt;&lt;span style="color: red;"&gt; Width&lt;/span&gt;&lt;span style="color: blue;"&gt;="150" /&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;RowDefinition&lt;/span&gt;&lt;span style="color: red;"&gt; Height&lt;/span&gt;&lt;span style="color: blue;"&gt;="35" /&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;RowDefinition&lt;/span&gt;&lt;span style="color: red;"&gt; Height&lt;/span&gt;&lt;span style="color: blue;"&gt;="35" /&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;RowDefinition&lt;/span&gt;&lt;span style="color: blue;"&gt; /&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Label&lt;/span&gt;&lt;span style="color: red;"&gt; Margin&lt;/span&gt;&lt;span style="color: blue;"&gt;="5"&lt;/span&gt;&lt;span style="color: red;"&gt; Grid.Column&lt;/span&gt;&lt;span style="color: blue;"&gt;="0"&lt;/span&gt;&lt;span style="color: red;"&gt; Grid.Row&lt;/span&gt;&lt;span style="color: blue;"&gt;="0"&lt;/span&gt;&lt;span style="color: red;"&gt; Content&lt;/span&gt;&lt;span style="color: blue;"&gt;="_UserID" /&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;TextBox&lt;/span&gt;&lt;span style="color: red;"&gt; Margin&lt;/span&gt;&lt;span style="color: blue;"&gt;="5"&lt;/span&gt;&lt;span style="color: red;"&gt; Grid.Column&lt;/span&gt;&lt;span style="color: blue;"&gt;="1"&lt;/span&gt;&lt;span style="color: red;"&gt; Grid.Row&lt;/span&gt;&lt;span style="color: blue;"&gt;="0" /&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Label&lt;/span&gt;&lt;span style="color: red;"&gt; Margin&lt;/span&gt;&lt;span style="color: blue;"&gt;="5"&lt;/span&gt;&lt;span style="color: red;"&gt; Grid.Column&lt;/span&gt;&lt;span style="color: blue;"&gt;="0"&lt;/span&gt;&lt;span style="color: red;"&gt; Grid.Row&lt;/span&gt;&lt;span style="color: blue;"&gt;="1"&lt;/span&gt;&lt;span style="color: red;"&gt; Content&lt;/span&gt;&lt;span style="color: blue;"&gt;="_Password" /&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;TextBox&lt;/span&gt;&lt;span style="color: red;"&gt; Margin&lt;/span&gt;&lt;span style="color: blue;"&gt;="5"&lt;/span&gt;&lt;span style="color: red;"&gt; Grid.Column&lt;/span&gt;&lt;span style="color: blue;"&gt;="1"&lt;/span&gt;&lt;span style="color: red;"&gt; Grid.Row&lt;/span&gt;&lt;span style="color: blue;"&gt;="1" /&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Button&lt;/span&gt;&lt;span style="color: red;"&gt; Margin&lt;/span&gt;&lt;span style="color: blue;"&gt;="5"&lt;/span&gt;&lt;span style="color: red;"&gt; Grid.Column&lt;/span&gt;&lt;span style="color: blue;"&gt;="1"&lt;/span&gt;&lt;span style="color: red;"&gt; Grid.Row&lt;/span&gt;&lt;span style="color: blue;"&gt;="2"&amp;gt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;_OK&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Button&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Grid&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Window&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;img src="http://kzt.wankuma.com/site/special/2009/04/TextBox_4.jpg" /&gt;&lt;br&gt;
&lt;br&gt;
このようにGridの行・列のサイズを指定し子要素はそのサイズに合わせストレッチしている場合、きちんとサイズが合っていれば良いのですが、フォントサイズが途中で変更になった場合などに不都合が生じます。&lt;br&gt;
上記例のTextBoxのフォントサイズを変更するとこのようになります。&lt;br&gt;
&lt;br&gt;
&lt;img src="http://kzt.wankuma.com/site/special/2009/04/TextBox_5.jpg" /&gt;&lt;br&gt;
&lt;br&gt;
このようにTextBoxコントロールの特性をきちんと理解し、レイアウト作成時に考慮する事が重要です。&lt;br&gt;
今回はお馴染みのTextBoxコントロールでした。&lt;br&gt;
&lt;br&gt;
to be continue・・・&lt;br&gt;&lt;img src ="http://blogs.wankuma.com/kzt/aggbug/172267.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuto</dc:creator><title>[WPF] MVVMを使用した場合のViewのフェードイン・フェードアウト用ヘルパクラスの実装</title><link>http://blogs.wankuma.com/kzt/archive/2009/04/21/171852.aspx</link><pubDate>Tue, 21 Apr 2009 21:42:00 GMT</pubDate><guid>http://blogs.wankuma.com/kzt/archive/2009/04/21/171852.aspx</guid><wfw:comment>http://blogs.wankuma.com/kzt/comments/171852.aspx</wfw:comment><comments>http://blogs.wankuma.com/kzt/archive/2009/04/21/171852.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kzt/comments/commentRss/171852.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kzt/services/trackbacks/171852.aspx</trackback:ping><description>前回の「&lt;A href="http://blogs.wankuma.com/kzt/archive/2009/04/16/171537.aspx" target="_blank"&gt;MVVMを使用した場合のViewのフェードアウトの実装方法について&lt;/a&gt;」について書きなぐりだけど実装が一応出来たのであげます。&lt;br&gt;
まず、MSDNマガジンの「&lt;a href="http://msdn.microsoft.com/ja-jp/magazine/dd419663.aspx" target="_blank"&gt;Model-View-ViewModel デザイン パターンによる WPF アプリケーション&lt;/a&gt;」を元にしていますので、出てくる文言が分からない場合はリンク先を参照してください。&lt;br&gt;
&lt;br&gt;
参考サイトでは、MainWindowView内でWorkspaceエリアにAllCustomerViewとCustomerViewが動的に配置されます。&lt;br&gt;
MVVMパターンを使用しているので、Viewの配置はViewModelインスタンスの扱いによって行われます。&lt;br&gt;
Viewが描画される仕組みは、ViewModelとViewがDataTemplateによって関連付けられ、ViewModelインスタンスが存在した場合にViewが読み込まれます。&lt;br&gt;
逆にViewModelインスタンスが破棄されるとデータが有効でなくなるためViewも破棄されます。&lt;br&gt;
&lt;br&gt;
DataTemplateの仕組みがある為、ViewModelはViewの描画に関しては知る必要が無く、Viewも自身のDataContextを元にデータバインドを行うためデータの管理に関して知る必要がありません。&lt;br&gt;
この疎結合を生み出すパターンとしてMVVMが使用されます。&lt;br&gt;
&lt;br&gt;
これを踏まえて、例えば動的に配置されるAllCustomerViewやCustomerViewが配置・破棄される際にフェードイン・フェードアウトなどのインタラクションを付け加えようとした場合にどのように実装すれば良いのでしょうか？&lt;br&gt;
Viewの開始時のフェードインについてはUserControlのLoadedイベントにフェードイン用のアニメーションをイベントトリガにて設定すれば実装出来ます。&lt;br&gt;
&lt;br&gt;
問題なのはView終了時のフェードアウトです。&lt;br&gt;
&lt;br&gt;
Viewを終了する為にはViewModelインスタンスを破棄する必要があります。&lt;br&gt;
アニメーションは設定対象のオブジェクト（View）のインスタンスが有効である期間しか行われない（見えない）為、Viewの終了時のフェードアウトを行っている場合はViewModelは破棄出来ないことになります。&lt;br&gt;
ですが、ViewはViewModelによって管理される為、ViewModel側でViewのフェードアウト終了を感知する必要が出てきます。&lt;br&gt;
&lt;br&gt;
Viewのフェードアウト終了時をViewModel側で感知するために、ViewModel側で感知用のプロパティを実装し、Viewとデータバインドを行い、Viewのフェードアウト時にプロパティトリガを使用して終了通知を送る事も出来ましたが、フェードアウトをする為だけにViewModel側でプロパティを実装しデータバインドを行うのは良い実装ではないと思います。&lt;br&gt;
ここでViewとViewModelの間に、遷移感知用のヘルパクラスを使用したらどうなるかと思って実装してみました。&lt;br&gt;
&lt;br&gt;
まず、目標として以下の事をあげました。&lt;br&gt;
&lt;br&gt;
&lt;ol&gt;
&lt;li&gt;Viewのアニメーション定義はViewに行いさせたい&lt;/li&gt;
&lt;li&gt;ViewとViewModelの疎結合を損ないたくない&lt;/li&gt;
&lt;li&gt;ViewModel側にViewのフェードアウト終了を意識させたくない&lt;/li&gt;
&lt;li&gt;View側でViewModelがフェードアウト終了を待機していることを意識させたくない&lt;/li&gt;
&lt;li&gt;フェードイン・フェードアウトの設定はXAMLで設定したい&lt;/li&gt;
&lt;/ol&gt;
以上が目標です。&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
また書きなぐりですので、コード例の注意点がいくつかあります。&lt;br&gt;
&lt;br&gt;
&lt;ol&gt;
&lt;li&gt;参考サイトをベースに実装していますが、一部変更しています&lt;/li&gt;
&lt;li&gt;Viewのフェードアウトについての例なので、今回はModelは書いてありません&lt;/li&gt;
&lt;li&gt;例外処理などはきちんと実装していません&lt;/li&gt;
&lt;li&gt;自分で作成しているアプリケーション用の為、汎用的に使用できません&lt;/li&gt;
&lt;/ol&gt;
では実装結果です。&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
まず、View側のフェードイン・フェードアウトの設定は２パターン作りました。&lt;br&gt;
リソース名指定方法と、リソース指定方法です。&lt;br&gt;
&lt;br&gt;
- リソース名指定方法 -&lt;br&gt;
&lt;div class="code"&gt;
&lt;div style="font-family: メイリオ; font-size: 8pt; color: black; background: white;"&gt;
&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;UserControl&lt;/span&gt;&lt;span style="color: red;"&gt; x&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;Class&lt;/span&gt;&lt;span style="color: blue;"&gt;="FadeSample.View.Sample1View"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;x&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt;
&lt;br&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;helper&lt;/span&gt;&lt;span style="color: blue;"&gt;="clr-namespace:FadeSample.Helper"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="background: pink;"&gt;&lt;span style="color: red;"&gt;helper&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;TransitionHelper.Attach&lt;/span&gt;&lt;span style="color: blue;"&gt;="True"&lt;/span&gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="background: pink;"&gt;&lt;span style="color: red;"&gt;helper&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;TransitionHelper.LoadAnimationName&lt;/span&gt;&lt;span style="color: blue;"&gt;="LoadAnimation"&lt;/span&gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="background: pink;"&gt;&lt;span style="color: red;"&gt;helper&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;TransitionHelper.CloseAnimationName&lt;/span&gt;&lt;span style="color: blue;"&gt;="CloseAnimation"&lt;/span&gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Opacity&lt;/span&gt;&lt;span style="color: blue;"&gt;="0"&amp;gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
- リソース指定方法 -&lt;br&gt;
&lt;div class="code"&gt;
&lt;div style="font-family: メイリオ; font-size: 8pt; color: black; background: white;"&gt;
&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;UserControl&lt;/span&gt;&lt;span style="color: red;"&gt; x&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;Class&lt;/span&gt;&lt;span style="color: blue;"&gt;="FadeSample.View.Sample1View"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;x&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt;
&lt;br&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;helper&lt;/span&gt;&lt;span style="color: blue;"&gt;="clr-namespace:FadeSample.Helper"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="background: pink;"&gt;&lt;span style="color: red;"&gt;helper&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;TransitionHelper.Attach&lt;/span&gt;&lt;span style="color: blue;"&gt;="True"&lt;/span&gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="background: pink;"&gt;&lt;span style="color: red;"&gt;helper&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;TransitionHelper.LoadStoryboard&lt;/span&gt;&lt;span style="color: blue;"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515;"&gt;DynamicResource&lt;/span&gt;&lt;span style="color: red;"&gt; LoadAnimation&lt;/span&gt;&lt;span style="color: blue;"&gt;}"&lt;/span&gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="background: pink;"&gt;&lt;span style="color: red;"&gt;helper&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;TransitionHelper.CloseStoryboard&lt;/span&gt;&lt;span style="color: blue;"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515;"&gt;DynamicResource&lt;/span&gt;&lt;span style="color: red;"&gt; CloseAnimation&lt;/span&gt;&lt;span style="color: blue;"&gt;}"&lt;/span&gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Opacity&lt;/span&gt;&lt;span style="color: blue;"&gt;="0"&amp;gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
この２パターンの違いは、フェードイン・フェードアウトを定義しているリソースを名前指定で設定するか、リソース指定で設定するかの違いです。&lt;br&gt;
リソース指定の場合は、少し注意する必要があります。View（UserControl）内でリソースを定義している場合はDynamicResourceでないとエラーになります。&lt;br&gt;
これはUserControlのInitializeComponentメソッドが呼ばれ、XAML内が解析される時にStaticResourceの場合だとまたリソースインスタンスが生成されていない為です。&lt;br&gt;
&lt;br&gt;
上記例でも解るとおりに、TransitionHelperという遷移感知ヘルパクラスの添付プロパティを使用してアニメーションを定義しています。&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
まずは今回作成したソリューション一覧です。&lt;br&gt;
&lt;br&gt;
&lt;img src="http://kzt.wankuma.com/site/special/2009/04/フェードアウト_1.jpg" /&gt;&lt;br&gt;
&lt;br&gt;
ではViewModelからです。&lt;br&gt;
ViewModelの基底クラスとなるViewModelBaseを定義します。&lt;br&gt;
&lt;br&gt;
- ViewModelBase.cs -&lt;br&gt;
&lt;div class="code"&gt;
&lt;div style="font-family: メイリオ; font-size: 8pt; color: black; background: white;"&gt;
&lt;span style="color: blue;"&gt;using&lt;/span&gt; System;
&lt;br&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.ComponentModel;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: blue;"&gt;namespace&lt;/span&gt; FadeSample.ViewModel
&lt;br&gt;{
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;ViewModelBase&lt;/span&gt; : &lt;span style="color: #2b91af;"&gt;INotifyPropertyChanged&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; RequestClosed Event
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; ViewModel&amp;#20596;&amp;#32066;&amp;#20102;&amp;#36890;&amp;#30693;&amp;#29992;&amp;#12452;&amp;#12505;&amp;#12531;&amp;#12488;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;event&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af;"&gt;TransitionEventArgs&lt;/span&gt;&amp;gt; RequestClose;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;internal&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; OnRequestClose(&lt;span style="color: #2b91af;"&gt;ViewModelBase&lt;/span&gt; transitionViewModel)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af;"&gt;TransitionEventArgs&lt;/span&gt;&amp;gt; handler = &lt;span style="color: blue;"&gt;this&lt;/span&gt;.RequestClose;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (handler != &lt;span style="color: blue;"&gt;null&lt;/span&gt;)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; handler(&lt;span style="color: blue;"&gt;this&lt;/span&gt;, &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;TransitionEventArgs&lt;/span&gt;(transitionViewModel));
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; ViewClose Event
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &amp;#36983;&amp;#31227;&amp;#12504;&amp;#12523;&amp;#12497;&amp;#20596;&amp;#32066;&amp;#20102;&amp;#36890;&amp;#30693;&amp;#29992;&amp;#12452;&amp;#12505;&amp;#12531;&amp;#12488;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;event&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af;"&gt;TransitionEventArgs&lt;/span&gt;&amp;gt; ViewClose;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;protected&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Close(&lt;span style="color: #2b91af;"&gt;ViewModelBase&lt;/span&gt; transitionViewModel)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af;"&gt;TransitionEventArgs&lt;/span&gt;&amp;gt; handler = &lt;span style="color: blue;"&gt;this&lt;/span&gt;.ViewClose;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (handler != &lt;span style="color: blue;"&gt;null&lt;/span&gt;)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; handler(&lt;span style="color: blue;"&gt;this&lt;/span&gt;, &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;TransitionEventArgs&lt;/span&gt;(transitionViewModel));
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; INotifyPropertyChanged &amp;#12513;&amp;#12531;&amp;#12496;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &amp;#12503;&amp;#12525;&amp;#12497;&amp;#12486;&amp;#12451;&amp;#20516;&amp;#22793;&amp;#26356;&amp;#36890;&amp;#30693;&amp;#29992;&amp;#12452;&amp;#12505;&amp;#12531;&amp;#12488;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;event&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;PropertyChangedEventHandler&lt;/span&gt; PropertyChanged;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;protected&lt;/span&gt; &lt;span style="color: blue;"&gt;virtual&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; OnPropertyChanged(&lt;span style="color: blue;"&gt;string&lt;/span&gt; propertyName)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;PropertyChangedEventHandler&lt;/span&gt; handler = &lt;span style="color: blue;"&gt;this&lt;/span&gt;.PropertyChanged;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (handler != &lt;span style="color: blue;"&gt;null&lt;/span&gt;)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; handler(&lt;span style="color: blue;"&gt;this&lt;/span&gt;, &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;PropertyChangedEventArgs&lt;/span&gt;(propertyName));
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;TransitionEventArgs&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  : &lt;span style="color: #2b91af;"&gt;EventArgs&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; TransitionEventArgs(&lt;span style="color: #2b91af;"&gt;ViewModelBase&lt;/span&gt; transitionViewModel)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.transitionViewModel = transitionViewModel;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;ViewModelBase&lt;/span&gt; transitionViewModel;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &amp;#36983;&amp;#31227;&amp;#20808;ViewModel&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;ViewModelBase&lt;/span&gt; TransitionViewModel
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;get&lt;/span&gt; { &lt;span style="color: blue;"&gt;return&lt;/span&gt; transitionViewModel; }
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;}
&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
ViewModelBaseクラスではプロパティ値変更通知用のINotifyPropertyChangedインターフェイスを実装しています。&lt;br&gt;
また、ViewModelインスタンスを管理しているViewModelクラスへインスタンスの破棄を通知するためのRequestCloseイベントと、遷移感知ヘルパクラスへ終了を通知する為のViewCloseイベントを実装しています。&lt;br&gt;
２つのイベントでは次遷移先のViewModelを受け渡す為のTransitionEventArgsクラスも実装しています。&lt;br&gt;
ViewCloseイベントが発行されると遷移感知ヘルパクラスが感知し、フェードインアニメーションを実行し終了するとRequestCloseイベントを発行するような仕組みです。&lt;br&gt;
&lt;br&gt;
次にViewModelの切り替えをするMainWindowViewModeです。&lt;br&gt;
&lt;br&gt;
- MainWindowViewModel.cs -&lt;br&gt;
&lt;div class="code"&gt;
&lt;div style="font-family: メイリオ; font-size: 8pt; color: black; background: white;"&gt;
&lt;span style="color: blue;"&gt;using&lt;/span&gt; System;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: blue;"&gt;namespace&lt;/span&gt; FadeSample.ViewModel
&lt;br&gt;{
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;MainWindowViewModel&lt;/span&gt; : &lt;span style="color: #2b91af;"&gt;ViewModelBase&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; Constructor
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; MainWindowViewModel()
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Workspace = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Sample1ViewModel&lt;/span&gt;();
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; Property
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;ViewModelBase&lt;/span&gt; workspace;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; View&amp;#12487;&amp;#12540;&amp;#12479;&amp;#20803;ViewModel&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;ViewModelBase&lt;/span&gt; Workspace
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;get&lt;/span&gt; { &lt;span style="color: blue;"&gt;return&lt;/span&gt; workspace; }
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;set&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (workspace == &lt;span style="color: blue;"&gt;value&lt;/span&gt;) &lt;span style="color: blue;"&gt;return&lt;/span&gt;;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; workspace = &lt;span style="color: blue;"&gt;value&lt;/span&gt;;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (workspace != &lt;span style="color: blue;"&gt;null&lt;/span&gt;)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; workspace.RequestClose += Workspace_RequestClosed;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; OnPropertyChanged(&lt;span style="color: #a31515;"&gt;"Workspace"&lt;/span&gt;);
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; Event Handler
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; RequestClose&amp;#12452;&amp;#12505;&amp;#12531;&amp;#12488;&amp;#12495;&amp;#12531;&amp;#12489;&amp;#12521;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Workspace_RequestClosed(&lt;span style="color: blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af;"&gt;TransitionEventArgs&lt;/span&gt; e)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Workspace.RequestClose -= Workspace_RequestClosed;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Workspace = &lt;span style="color: blue;"&gt;null&lt;/span&gt;;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//&amp;#36983;&amp;#31227;&amp;#20808;&amp;#12364;&amp;#12354;&amp;#12427;&amp;#22580;&amp;#21512;&amp;#12399;&amp;#36983;&amp;#31227;&amp;#12377;&amp;#12427;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (e.TransitionViewModel != &lt;span style="color: blue;"&gt;null&lt;/span&gt;)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Workspace = e.TransitionViewModel;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;}
&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
MainWindowViewModelではViewの切り替え元のデータとなるViewModelBase型のWorkspaceプロパティを実装しています。WorkspaceプロパティにViewModelBaseの派生クラスを設定することにより、DataTemplateにてViewが起動します。&lt;br&gt;
またWorkspaceプロパティに設定されたViewModelより終了通知を受けるためのRequestCloseイベントもアタッチし、イベントハンドラ内でWorkspaceプロパティに設定されているViewModelを破棄し、次遷移先のViewModeインスタンスをWorkspaceプロパティに設定します。&lt;br&gt;
&lt;br&gt;
次にMainWindowViewModelのViewにあたるMainWindowです。&lt;br&gt;
&lt;br&gt;
- MainWindow.xaml -&lt;br&gt;
&lt;div class="code"&gt;
&lt;div style="font-family: メイリオ; font-size: 8pt; color: black; background: white;"&gt;
&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Window&lt;/span&gt;&lt;span style="color: red;"&gt; x&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;Class&lt;/span&gt;&lt;span style="color: blue;"&gt;="FadeSample.MainWindow"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;x&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; Title&lt;/span&gt;&lt;span style="color: blue;"&gt;="MainWindow"&lt;/span&gt;&lt;span style="color: red;"&gt; Height&lt;/span&gt;&lt;span style="color: blue;"&gt;="300"&lt;/span&gt;&lt;span style="color: red;"&gt; Width&lt;/span&gt;&lt;span style="color: blue;"&gt;="300"&lt;/span&gt;
&lt;br&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataContext&lt;/span&gt;&lt;span style="color: blue;"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515;"&gt;StaticResource&lt;/span&gt;&lt;span style="color: red;"&gt; StartupViewModel&lt;/span&gt;&lt;span style="color: blue;"&gt;}"&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Grid&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green;"&gt;&amp;lt;!-- Workspace&amp;#12456;&amp;#12522;&amp;#12450; --&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;ContentControl&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; VerticalAlignment&lt;/span&gt;&lt;span style="color: blue;"&gt;="Center"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HorizontalAlignment&lt;/span&gt;&lt;span style="color: blue;"&gt;="Center"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Content&lt;/span&gt;&lt;span style="color: blue;"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Binding&lt;/span&gt;&lt;span style="color: red;"&gt; Workspace&lt;/span&gt;&lt;span style="color: blue;"&gt;}"&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;ContentControl&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Grid&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Window&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
MainWindowはViewを表示する元のWindowになります。今回はMainWindowViewModelのWorkspaceプロパティに設定されたViewModelをDataTemplateを使用して表示する為のContentControlを配置してあります。&lt;br&gt;
また、MainWindowのDataContextプロパティに設定するMainWindowViewModelインスタンスはリソースより設定しています。&lt;br&gt;
&lt;br&gt;
では次に、フェードイン・フェードアウトのサンプルとなるSample1ViewModelとSample2ViewModelです。&lt;br&gt;
&lt;br&gt;
- Sample1ViewModel.cs -&lt;br&gt;
&lt;div class="code"&gt;
&lt;div style="font-family: メイリオ; font-size: 8pt; color: black; background: white;"&gt;
&lt;span style="color: blue;"&gt;using&lt;/span&gt; System;
&lt;br&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.Windows.Input;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: blue;"&gt;namespace&lt;/span&gt; FadeSample.ViewModel
&lt;br&gt;{
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Sample1ViewModel&lt;/span&gt; : &lt;span style="color: #2b91af;"&gt;ViewModelBase&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; Command
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;ICommand&lt;/span&gt; command;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;ICommand&lt;/span&gt; Command
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;get&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (command == &lt;span style="color: blue;"&gt;null&lt;/span&gt;)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; command = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;RelayCommand&lt;/span&gt;(param =&amp;gt; CloseView());
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; command;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; CloseView()
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Close(&lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Sample2ViewModel&lt;/span&gt;());
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;}
&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
- Sample2ViewModel.cs -&lt;br&gt;
&lt;div class="code"&gt;
&lt;div style="font-family: メイリオ; font-size: 8pt; color: black; background: white;"&gt;
&lt;span style="color: blue;"&gt;using&lt;/span&gt; System;
&lt;br&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.Windows.Input;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: blue;"&gt;namespace&lt;/span&gt; FadeSample.ViewModel
&lt;br&gt;{
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Sample2ViewModel&lt;/span&gt; : &lt;span style="color: #2b91af;"&gt;ViewModelBase&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; Command
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;ICommand&lt;/span&gt; command;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;ICommand&lt;/span&gt; Command
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;get&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (command == &lt;span style="color: blue;"&gt;null&lt;/span&gt;)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; command = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;RelayCommand&lt;/span&gt;(param =&amp;gt; CloseView());
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; command;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; CloseView()
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Close(&lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Sample1ViewModel&lt;/span&gt;());
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;}
&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
Sample1ViewModelもSample2ViewModelもViewのフェードイン・フェードアウトを試すためだけの簡単な実装です。&lt;br&gt;
Viewが終了する際に使用するコマンドを実装しています。ここではコマンドの指定をRelayCommand型で定義していますが、RelayCommandは汎用コマンド定義クラスであり、参考サイトで詳しく説明されています。&lt;br&gt;
詳細については参考サイトをご覧ください。一応RelayCommandもあげておきます。&lt;br&gt;
&lt;br&gt;
- RelayCommand.cs -&lt;br&gt;
&lt;div class="code"&gt;
&lt;div style="font-family: メイリオ; font-size: 8pt; color: black; background: white;"&gt;
&lt;span style="color: blue;"&gt;using&lt;/span&gt; System;
&lt;br&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.Windows.Input;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: blue;"&gt;namespace&lt;/span&gt; FadeSample.ViewModel
&lt;br&gt;{
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &amp;#12467;&amp;#12510;&amp;#12531;&amp;#12489;&amp;#12504;&amp;#12523;&amp;#12497;&amp;#12463;&amp;#12521;&amp;#12473;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;RelayCommand&lt;/span&gt; : &lt;span style="color: #2b91af;"&gt;ICommand&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Action&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;object&lt;/span&gt;&amp;gt; execute;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Predicate&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;object&lt;/span&gt;&amp;gt; canExecute;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; Constructors
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; RelayCommand(&lt;span style="color: #2b91af;"&gt;Action&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;object&lt;/span&gt;&amp;gt; execute) : &lt;span style="color: blue;"&gt;this&lt;/span&gt;(execute,&lt;span style="color: blue;"&gt;null&lt;/span&gt;)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; RelayCommand(&lt;span style="color: #2b91af;"&gt;Action&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;object&lt;/span&gt;&amp;gt; execute, &lt;span style="color: #2b91af;"&gt;Predicate&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;object&lt;/span&gt;&amp;gt; canExecute)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (execute == &lt;span style="color: blue;"&gt;null&lt;/span&gt;) &lt;span style="color: blue;"&gt;throw&lt;/span&gt; &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;ArgumentNullException&lt;/span&gt;(&lt;span style="color: #a31515;"&gt;"execute"&lt;/span&gt;);
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.execute = execute;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.canExecute = canExecute;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; ICommand &amp;#12513;&amp;#12531;&amp;#12496;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;event&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;EventHandler&lt;/span&gt; CanExecuteChanged;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &amp;#12467;&amp;#12510;&amp;#12531;&amp;#12489;&amp;#23455;&amp;#34892;&amp;#21487;&amp;#21542;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;bool&lt;/span&gt; CanExecute(&lt;span style="color: blue;"&gt;object&lt;/span&gt; parameter)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; (canExecute == &lt;span style="color: blue;"&gt;null&lt;/span&gt; ? &lt;span style="color: blue;"&gt;true&lt;/span&gt; : canExecute(parameter));
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &amp;#12467;&amp;#12510;&amp;#12531;&amp;#12489;&amp;#23455;&amp;#34892;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Execute(&lt;span style="color: blue;"&gt;object&lt;/span&gt; parameter)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; execute(parameter);
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;}
&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
次に遷移感知ヘルパクラスを使用したSample1ViewとSample2Viewです。&lt;br&gt;
&lt;br&gt;
- Sample1View.xaml -&lt;br&gt;
&lt;div class="code"&gt;
&lt;div style="font-family: メイリオ; font-size: 8pt; color: black; background: white;"&gt;
&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;UserControl&lt;/span&gt;&lt;span style="color: red;"&gt; x&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;Class&lt;/span&gt;&lt;span style="color: blue;"&gt;="FadeSample.View.Sample1View"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;x&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt;
&lt;br&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;helper&lt;/span&gt;&lt;span style="color: blue;"&gt;="clr-namespace:FadeSample.ViewModel"&lt;/span&gt;
&lt;br&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; helper&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;TransitionHelper.Attach&lt;/span&gt;&lt;span style="color: blue;"&gt;="True"&lt;/span&gt;
&lt;br&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; helper&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;TransitionHelper.LoadStoryboard&lt;/span&gt;&lt;span style="color: blue;"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515;"&gt;DynamicResource&lt;/span&gt;&lt;span style="color: red;"&gt; LoadAnimation&lt;/span&gt;&lt;span style="color: blue;"&gt;}"&lt;/span&gt;
&lt;br&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; helper&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;TransitionHelper.CloseStoryboard&lt;/span&gt;&lt;span style="color: blue;"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515;"&gt;DynamicResource&lt;/span&gt;&lt;span style="color: red;"&gt; CloseAnimation&lt;/span&gt;&lt;span style="color: blue;"&gt;}"&lt;/span&gt;
&lt;br&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Opacity&lt;/span&gt;&lt;span style="color: blue;"&gt;="0"&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;UserControl.Resources&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green;"&gt;&amp;lt;!-- Load&amp;#26178;&amp;#12450;&amp;#12491;&amp;#12513;&amp;#12540;&amp;#12471;&amp;#12519;&amp;#12531; --&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Storyboard&lt;/span&gt;&lt;span style="color: red;"&gt; x&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;Key&lt;/span&gt;&lt;span style="color: blue;"&gt;="LoadAnimation"&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;DoubleAnimation&lt;/span&gt;&lt;span style="color: red;"&gt; Storyboard.TargetProperty&lt;/span&gt;&lt;span style="color: blue;"&gt;="Opacity"&lt;/span&gt;&lt;span style="color: red;"&gt; From&lt;/span&gt;&lt;span style="color: blue;"&gt;="0"&lt;/span&gt;&lt;span style="color: red;"&gt; To&lt;/span&gt;&lt;span style="color: blue;"&gt;="1"&lt;/span&gt;&lt;span style="color: red;"&gt; Duration&lt;/span&gt;&lt;span style="color: blue;"&gt;="00:00:0.5" /&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Storyboard&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green;"&gt;&amp;lt;!-- Close&amp;#26178;&amp;#12450;&amp;#12491;&amp;#12513;&amp;#12540;&amp;#12471;&amp;#12519;&amp;#12531; --&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Storyboard&lt;/span&gt;&lt;span style="color: red;"&gt; x&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;Key&lt;/span&gt;&lt;span style="color: blue;"&gt;="CloseAnimation"&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;DoubleAnimation&lt;/span&gt;&lt;span style="color: red;"&gt; Storyboard.TargetProperty&lt;/span&gt;&lt;span style="color: blue;"&gt;="Opacity"&lt;/span&gt;&lt;span style="color: red;"&gt; From&lt;/span&gt;&lt;span style="color: blue;"&gt;="1"&lt;/span&gt;&lt;span style="color: red;"&gt; To&lt;/span&gt;&lt;span style="color: blue;"&gt;="0"&lt;/span&gt;&lt;span style="color: red;"&gt; Duration&lt;/span&gt;&lt;span style="color: blue;"&gt;="00:00:0.5" /&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Storyboard&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;UserControl.Resources&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Border&lt;/span&gt;&lt;span style="color: red;"&gt; Background&lt;/span&gt;&lt;span style="color: blue;"&gt;="Red"&lt;/span&gt;&lt;span style="color: red;"&gt; Width&lt;/span&gt;&lt;span style="color: blue;"&gt;="150"&lt;/span&gt;&lt;span style="color: red;"&gt; Height&lt;/span&gt;&lt;span style="color: blue;"&gt;="150"&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Button&lt;/span&gt;&lt;span style="color: red;"&gt; Width&lt;/span&gt;&lt;span style="color: blue;"&gt;="100"&lt;/span&gt;&lt;span style="color: red;"&gt; Height&lt;/span&gt;&lt;span style="color: blue;"&gt;="30"&lt;/span&gt;&lt;span style="color: red;"&gt; Command&lt;/span&gt;&lt;span style="color: blue;"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Binding&lt;/span&gt;&lt;span style="color: red;"&gt; Path&lt;/span&gt;&lt;span style="color: blue;"&gt;=Command}"&amp;gt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Sample2View&amp;#12408;&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Button&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Border&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;UserControl&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
- Sample2View.xaml -&lt;br&gt;
&lt;div class="code"&gt;
&lt;div style="font-family: メイリオ; font-size: 8pt; color: black; background: white;"&gt;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;UserControl&lt;/span&gt;&lt;span style="color: red;"&gt; x&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;Class&lt;/span&gt;&lt;span style="color: blue;"&gt;="FadeSample.View.Sample2View"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;x&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt;
&lt;br&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;helper&lt;/span&gt;&lt;span style="color: blue;"&gt;="clr-namespace:FadeSample.ViewModel"&lt;/span&gt;
&lt;br&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; helper&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;TransitionHelper.Attach&lt;/span&gt;&lt;span style="color: blue;"&gt;="True"&lt;/span&gt;
&lt;br&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; helper&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;TransitionHelper.LoadAnimationName&lt;/span&gt;&lt;span style="color: blue;"&gt;="LoadAnimation"&lt;/span&gt;
&lt;br&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; helper&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;TransitionHelper.CloseAnimationName&lt;/span&gt;&lt;span style="color: blue;"&gt;="CloseAnimation"&lt;/span&gt;
&lt;br&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Opacity&lt;/span&gt;&lt;span style="color: blue;"&gt;="0"&lt;/span&gt;&lt;span style="color: red;"&gt; RenderTransformOrigin&lt;/span&gt;&lt;span style="color: blue;"&gt;="0.5,1"&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;UserControl.Resources&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green;"&gt;&amp;lt;!-- Load&amp;#26178;&amp;#12450;&amp;#12491;&amp;#12513;&amp;#12540;&amp;#12471;&amp;#12519;&amp;#12531; --&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Storyboard&lt;/span&gt;&lt;span style="color: red;"&gt; x&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;Key&lt;/span&gt;&lt;span style="color: blue;"&gt;="LoadAnimation"&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;DoubleAnimation&lt;/span&gt;&lt;span style="color: red;"&gt; Storyboard.TargetProperty&lt;/span&gt;&lt;span style="color: blue;"&gt;="Opacity"&lt;/span&gt;&lt;span style="color: red;"&gt; From&lt;/span&gt;&lt;span style="color: blue;"&gt;="0"&lt;/span&gt;&lt;span style="color: red;"&gt; To&lt;/span&gt;&lt;span style="color: blue;"&gt;="1"&lt;/span&gt;&lt;span style="color: red;"&gt; Duration&lt;/span&gt;&lt;span style="color: blue;"&gt;="00:00:0.5" /&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;DoubleAnimation&lt;/span&gt;&lt;span style="color: red;"&gt; Storyboard.TargetProperty&lt;/span&gt;&lt;span style="color: blue;"&gt;="(UIElement.RenderTransform).(ScaleTransform.ScaleY)"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; From&lt;/span&gt;&lt;span style="color: blue;"&gt;="0"&lt;/span&gt;&lt;span style="color: red;"&gt; To&lt;/span&gt;&lt;span style="color: blue;"&gt;="1"&lt;/span&gt;&lt;span style="color: red;"&gt; Duration&lt;/span&gt;&lt;span style="color: blue;"&gt;="00:00:0.5" /&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Storyboard&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green;"&gt;&amp;lt;!-- Close&amp;#26178;&amp;#12450;&amp;#12491;&amp;#12513;&amp;#12540;&amp;#12471;&amp;#12519;&amp;#12531; --&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Storyboard&lt;/span&gt;&lt;span style="color: red;"&gt; x&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;Key&lt;/span&gt;&lt;span style="color: blue;"&gt;="CloseAnimation"&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;DoubleAnimation&lt;/span&gt;&lt;span style="color: red;"&gt; Storyboard.TargetProperty&lt;/span&gt;&lt;span style="color: blue;"&gt;="Opacity"&lt;/span&gt;&lt;span style="color: red;"&gt; From&lt;/span&gt;&lt;span style="color: blue;"&gt;="1"&lt;/span&gt;&lt;span style="color: red;"&gt; To&lt;/span&gt;&lt;span style="color: blue;"&gt;="0"&lt;/span&gt;&lt;span style="color: red;"&gt; Duration&lt;/span&gt;&lt;span style="color: blue;"&gt;="00:00:0.5" /&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;DoubleAnimation&lt;/span&gt;&lt;span style="color: red;"&gt; Storyboard.TargetProperty&lt;/span&gt;&lt;span style="color: blue;"&gt;="(UIElement.RenderTransform).(ScaleTransform.ScaleY)"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; From&lt;/span&gt;&lt;span style="color: blue;"&gt;="1"&lt;/span&gt;&lt;span style="color: red;"&gt; To&lt;/span&gt;&lt;span style="color: blue;"&gt;="0"&lt;/span&gt;&lt;span style="color: red;"&gt; Duration&lt;/span&gt;&lt;span style="color: blue;"&gt;="00:00:0.5" /&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Storyboard&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;UserControl.Resources&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;UserControl.RenderTransform&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;ScaleTransform&lt;/span&gt;&lt;span style="color: red;"&gt; ScaleX&lt;/span&gt;&lt;span style="color: blue;"&gt;="1"&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; ScaleY&lt;/span&gt;&lt;span style="color: blue;"&gt;="0" /&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;UserControl.RenderTransform&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Border&lt;/span&gt;&lt;span style="color: red;"&gt; Background&lt;/span&gt;&lt;span style="color: blue;"&gt;="Blue"&lt;/span&gt;&lt;span style="color: red;"&gt; Width&lt;/span&gt;&lt;span style="color: blue;"&gt;="150"&lt;/span&gt;&lt;span style="color: red;"&gt; Height&lt;/span&gt;&lt;span style="color: blue;"&gt;="150"&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Button&lt;/span&gt;&lt;span style="color: red;"&gt; Width&lt;/span&gt;&lt;span style="color: blue;"&gt;="100"&lt;/span&gt;&lt;span style="color: red;"&gt; Height&lt;/span&gt;&lt;span style="color: blue;"&gt;="30"&lt;/span&gt;&lt;span style="color: red;"&gt; Command&lt;/span&gt;&lt;span style="color: blue;"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Binding&lt;/span&gt;&lt;span style="color: red;"&gt; Command&lt;/span&gt;&lt;span style="color: blue;"&gt;}"&amp;gt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Sample1View&amp;#12408;&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Button&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Border&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;UserControl&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
Sample1Viewではリソース指定で遷移感知ヘルパクラスを使用しています。フェードイン・フェードアウトのアニメーションを自身のリソース内にて定義しているのでDynamicResourceとなっています。&lt;br&gt;
Sample2Viewではリソース名指定で遷移感知ヘルパクラスを使用しています。&lt;br&gt;
今回Sample1ViewではOpacityを使用した徐々にViewが描画されるフェードイン・フェードアウトを。Sample2ViewではRenderTransformを使用した下から出てくるようなフェードイン・フェードアウトを指定してます。&lt;br&gt;
&lt;br&gt;
遷移管理ヘルパクラスの使用する場合の注意点としては、あくまでもViewに対しアニメーションをかけるのでViewに対して初期設定を行うことです。&lt;br&gt;
子要素に対してフェードイン・フェードアウトをかけるのでは無い事に注意して下さい。&lt;br&gt;
&lt;br&gt;
今回ViewとViewModelのDataTemplateはApp.xamlに設定してます。ではその設定です。&lt;br&gt;
&lt;br&gt;
- App.xaml -&lt;br&gt;
&lt;div class="code"&gt;
&lt;div style="font-family: メイリオ; font-size: 8pt; color: black; background: white;"&gt;
&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Application&lt;/span&gt;&lt;span style="color: red;"&gt; x&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;Class&lt;/span&gt;&lt;span style="color: blue;"&gt;="FadeSample.App"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;x&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt;
&lt;br&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;viewModel&lt;/span&gt;&lt;span style="color: blue;"&gt;="clr-namespace:FadeSample.ViewModel"&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;br&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;view&lt;/span&gt;&lt;span style="color: blue;"&gt;="clr-namespace:FadeSample.View"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; StartupUri&lt;/span&gt;&lt;span style="color: blue;"&gt;="MainWindow.xaml"&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Application.Resources&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;/span&gt;&lt;span style="color: green;"&gt;&amp;lt;!-- Startup ViewModel --&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;viewModel&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: #a31515;"&gt;MainWindowViewModel&lt;/span&gt;&lt;span style="color: red;"&gt; x&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;Key&lt;/span&gt;&lt;span style="color: blue;"&gt;="StartupViewModel" /&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green;"&gt;&amp;lt;!-- ViewMode &amp;#8594; View DataTemplate--&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: red;"&gt; DataType&lt;/span&gt;&lt;span style="color: blue;"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515;"&gt;x&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Type&lt;/span&gt;&lt;span style="color: red;"&gt; viewModel&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;Sample1ViewModel&lt;/span&gt;&lt;span style="color: blue;"&gt;}"&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;view&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Sample1View&lt;/span&gt;&lt;span style="color: blue;"&gt; /&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: red;"&gt; DataType&lt;/span&gt;&lt;span style="color: blue;"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515;"&gt;x&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Type&lt;/span&gt;&lt;span style="color: red;"&gt; viewModel&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;Sample2ViewModel&lt;/span&gt;&lt;span style="color: blue;"&gt;}"&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;view&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Sample2View&lt;/span&gt;&lt;span style="color: blue;"&gt; /&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Application.Resources&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Application&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
App.xamlにてViewとViewModelの関連をDataTemplateにて定義しています。&lt;br&gt;
MainWindowのContentControlのContentプロパティにバインドされているMainWindowViewModelのWorkspaceプロパティにViewModelが設定されるとViewが起動するわけです。&lt;br&gt;
&lt;br&gt;
では最後に遷移感知ヘルパクラスです。&lt;br&gt;
&lt;br&gt;
- TransitionHelper.cs -&lt;br&gt;
&lt;div class="code"&gt;
&lt;div style="font-family: メイリオ; font-size: 8pt; color: black; background: white;"&gt;
&lt;span style="color: blue;"&gt;using&lt;/span&gt; System;
&lt;br&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.Collections.Generic;
&lt;br&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.ComponentModel;
&lt;br&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.Windows;
&lt;br&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.Windows.Media.Animation;
&lt;br&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt; FadeSample.ViewModel;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: blue;"&gt;namespace&lt;/span&gt; FadeSample.Helper
&lt;br&gt;{
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; View&amp;#36983;&amp;#31227;&amp;#12504;&amp;#12523;&amp;#12497;&amp;#12463;&amp;#12521;&amp;#12473;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;TransitionHelper&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; Fields
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; View - ViewModel&amp;#20445;&amp;#25345;&amp;#29992;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af;"&gt;ViewModelBase&lt;/span&gt;, &lt;span style="color: #2b91af;"&gt;FrameworkElement&lt;/span&gt;&amp;gt; targets = 
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af;"&gt;ViewModelBase&lt;/span&gt;, &lt;span style="color: #2b91af;"&gt;FrameworkElement&lt;/span&gt;&amp;gt;();
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &amp;#36983;&amp;#31227;&amp;#12504;&amp;#12523;&amp;#12497;&amp;#12450;&amp;#12479;&amp;#12483;&amp;#12481;&amp;#29992;&amp;#28155;&amp;#20184;&amp;#12503;&amp;#12525;&amp;#12497;&amp;#12486;&amp;#12451;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;readonly&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;DependencyProperty&lt;/span&gt; AttachProperty =&amp;nbsp;&amp;nbsp;&amp;nbsp;  
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;DependencyProperty&lt;/span&gt;.RegisterAttached(&lt;span style="color: #a31515;"&gt;"Attach"&lt;/span&gt;, &lt;span style="color: blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color: blue;"&gt;bool&lt;/span&gt;), &lt;span style="color: blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;TransitionHelper&lt;/span&gt;), 
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;PropertyMetadata&lt;/span&gt;(&lt;span style="color: blue;"&gt;false&lt;/span&gt;,&lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;PropertyChangedCallback&lt;/span&gt;(AttachPropertyChangedCallback)));
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &amp;#36215;&amp;#21205;&amp;#26178;&amp;#12450;&amp;#12491;&amp;#12513;&amp;#12540;&amp;#12471;&amp;#12519;&amp;#12531;&amp;#12522;&amp;#12477;&amp;#12540;&amp;#12473;&amp;#21517;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;readonly&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;DependencyProperty&lt;/span&gt; LoadAnimationNameProperty =
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;DependencyProperty&lt;/span&gt;.RegisterAttached(&lt;span style="color: #a31515;"&gt;"LoadAnimationName"&lt;/span&gt;, &lt;span style="color: blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color: blue;"&gt;string&lt;/span&gt;), &lt;span style="color: blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;TransitionHelper&lt;/span&gt;));
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &amp;#32066;&amp;#20102;&amp;#26178;&amp;#12450;&amp;#12491;&amp;#12513;&amp;#12540;&amp;#12471;&amp;#12519;&amp;#12531;&amp;#12522;&amp;#12477;&amp;#12540;&amp;#12473;&amp;#21517;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;readonly&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;DependencyProperty&lt;/span&gt; CloseAnimationNameProperty =
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;DependencyProperty&lt;/span&gt;.RegisterAttached(&lt;span style="color: #a31515;"&gt;"CloseAnimationName"&lt;/span&gt;, &lt;span style="color: blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color: blue;"&gt;string&lt;/span&gt;), &lt;span style="color: blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;TransitionHelper&lt;/span&gt;));
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &amp;#36215;&amp;#21205;&amp;#26178;&amp;#12450;&amp;#12491;&amp;#12513;&amp;#12540;&amp;#12471;&amp;#12519;&amp;#12531;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;readonly&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;DependencyProperty&lt;/span&gt; LoadStoryboardProperty =
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;DependencyProperty&lt;/span&gt;.RegisterAttached(&lt;span style="color: #a31515;"&gt;"LoadStoryboard"&lt;/span&gt;, &lt;span style="color: blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;Storyboard&lt;/span&gt;), &lt;span style="color: blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;TransitionHelper&lt;/span&gt;));
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &amp;#32066;&amp;#20102;&amp;#26178;&amp;#12450;&amp;#12491;&amp;#12513;&amp;#12540;&amp;#12471;&amp;#12519;&amp;#12531;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;readonly&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;DependencyProperty&lt;/span&gt; CloseStoryboardProperty =
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;DependencyProperty&lt;/span&gt;.RegisterAttached(&lt;span style="color: #a31515;"&gt;"CloseStoryboard"&lt;/span&gt;, &lt;span style="color: blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;Storyboard&lt;/span&gt;), &lt;span style="color: blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;TransitionHelper&lt;/span&gt;));
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; Metadata Callback Method
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; AttachProperty&amp;#22793;&amp;#26356;&amp;#26178;&amp;#12467;&amp;#12540;&amp;#12523;&amp;#12496;&amp;#12483;&amp;#12463;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; AttachPropertyChangedCallback(&lt;span style="color: #2b91af;"&gt;DependencyObject&lt;/span&gt; d, &lt;span style="color: #2b91af;"&gt;DependencyPropertyChangedEventArgs&lt;/span&gt; e)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;FrameworkElement&lt;/span&gt; target = (&lt;span style="color: #2b91af;"&gt;FrameworkElement&lt;/span&gt;)d;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//&amp;#12487;&amp;#12470;&amp;#12452;&amp;#12531;&amp;#12514;&amp;#12540;&amp;#12489;&amp;#26178;&amp;#12399;&amp;#36983;&amp;#31227;&amp;#12504;&amp;#12523;&amp;#12497;&amp;#27231;&amp;#33021;&amp;#12434;&amp;#20351;&amp;#29992;&amp;#12375;&amp;#12394;&amp;#12356;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (&lt;span style="color: #2b91af;"&gt;DesignerProperties&lt;/span&gt;.GetIsInDesignMode(target)) &lt;span style="color: blue;"&gt;return&lt;/span&gt;;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; target.DataContextChanged += target_DataContextChanged;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; target.Loaded += target_Loaded;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; EventHandlers
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; ViewModel&amp;#35373;&amp;#23450;&amp;#26178;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; target_DataContextChanged(&lt;span style="color: blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af;"&gt;DependencyPropertyChangedEventArgs&lt;/span&gt; e)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;FrameworkElement&lt;/span&gt; target = (&lt;span style="color: #2b91af;"&gt;FrameworkElement&lt;/span&gt;)sender;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; target.DataContextChanged -= target_DataContextChanged;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;ViewModelBase&lt;/span&gt; viewModel = target.DataContext &lt;span style="color: blue;"&gt;as&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;ViewModelBase&lt;/span&gt;;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (viewModel == &lt;span style="color: blue;"&gt;null&lt;/span&gt;) &lt;span style="color: blue;"&gt;throw&lt;/span&gt; &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;ApplicationException&lt;/span&gt;(&lt;span style="color: #a31515;"&gt;"View&amp;#36983;&amp;#31227;&amp;#12395;&amp;#12399;ViewModel&amp;#12364;&amp;#24517;&amp;#35201;&amp;#12391;&amp;#12377;&amp;#12290;"&lt;/span&gt;);
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; viewModel.ViewClose += viewModel_ViewClose;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; targets.Add(viewModel, target);
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; View&amp;#38283;&amp;#22987;&amp;#26178;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; target_Loaded(&lt;span style="color: blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af;"&gt;RoutedEventArgs&lt;/span&gt; e)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;FrameworkElement&lt;/span&gt; target = (&lt;span style="color: #2b91af;"&gt;FrameworkElement&lt;/span&gt;)sender;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; target.Loaded -= target_Loaded;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;Storyboard&lt;/span&gt; loadStoryboard = GetLoadStoryboard(target);
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (loadStoryboard == &lt;span style="color: blue;"&gt;null&lt;/span&gt;)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; loadStoryboard = GetLoadStoryboardByName(target);
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (loadStoryboard != &lt;span style="color: blue;"&gt;null&lt;/span&gt;)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; target.BeginStoryboard(loadStoryboard);
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; ViewModel&amp;#32066;&amp;#20102;&amp;#26178;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; viewModel_ViewClose(&lt;span style="color: blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af;"&gt;TransitionEventArgs&lt;/span&gt; e)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;ViewModelBase&lt;/span&gt; viewModel = (&lt;span style="color: #2b91af;"&gt;ViewModelBase&lt;/span&gt;)sender;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; viewModel.ViewClose -= viewModel_ViewClose;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;FrameworkElement&lt;/span&gt; target = targets[viewModel];
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;Storyboard&lt;/span&gt; closeStoryboard = GetCloseStoryboard(target);
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (closeStoryboard == &lt;span style="color: blue;"&gt;null&lt;/span&gt;)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; closeStoryboard = GetCloseStoryboardByName(target);
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (closeStoryboard != &lt;span style="color: blue;"&gt;null&lt;/span&gt;)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; closeStoryboard.Completed += (obj, args) =&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; viewModel.OnRequestClose(e.TransitionViewModel);
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; };
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; target.BeginStoryboard(closeStoryboard);
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;else&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; viewModel.OnRequestClose(e.TransitionViewModel);
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; targets.Remove(viewModel);
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; Attached Method
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;bool&lt;/span&gt; GetAttach(&lt;span style="color: #2b91af;"&gt;DependencyObject&lt;/span&gt; obj)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; (&lt;span style="color: blue;"&gt;bool&lt;/span&gt;)obj.GetValue(AttachProperty);
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; SetAttach(&lt;span style="color: #2b91af;"&gt;DependencyObject&lt;/span&gt; obj, &lt;span style="color: blue;"&gt;bool&lt;/span&gt; value)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; obj.SetValue(AttachProperty, value);
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; GetLoadAnimationName(&lt;span style="color: #2b91af;"&gt;DependencyObject&lt;/span&gt; obj)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; (&lt;span style="color: blue;"&gt;string&lt;/span&gt;)obj.GetValue(LoadAnimationNameProperty);
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; SetLoadAnimationName(&lt;span style="color: #2b91af;"&gt;DependencyObject&lt;/span&gt; obj, &lt;span style="color: blue;"&gt;string&lt;/span&gt; value)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; obj.SetValue(LoadAnimationNameProperty, value);
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; GetCloseAnimationName(&lt;span style="color: #2b91af;"&gt;DependencyObject&lt;/span&gt; obj)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; (&lt;span style="color: blue;"&gt;string&lt;/span&gt;)obj.GetValue(CloseAnimationNameProperty);
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; SetCloseAnimationName(&lt;span style="color: #2b91af;"&gt;DependencyObject&lt;/span&gt; obj, &lt;span style="color: blue;"&gt;string&lt;/span&gt; value)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; obj.SetValue(CloseAnimationNameProperty, value);
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Storyboard&lt;/span&gt; GetLoadStoryboard(&lt;span style="color: #2b91af;"&gt;DependencyObject&lt;/span&gt; obj)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; (&lt;span style="color: #2b91af;"&gt;Storyboard&lt;/span&gt;)obj.GetValue(LoadStoryboardProperty);
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; SetLoadStoryboard(&lt;span style="color: #2b91af;"&gt;DependencyObject&lt;/span&gt; obj, &lt;span style="color: #2b91af;"&gt;Storyboard&lt;/span&gt; value)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; obj.SetValue(LoadStoryboardProperty, value);
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Storyboard&lt;/span&gt; GetCloseStoryboard(&lt;span style="color: #2b91af;"&gt;DependencyObject&lt;/span&gt; obj)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; (&lt;span style="color: #2b91af;"&gt;Storyboard&lt;/span&gt;)obj.GetValue(CloseStoryboardProperty);
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; SetCloseStoryboard(&lt;span style="color: #2b91af;"&gt;DependencyObject&lt;/span&gt; obj, &lt;span style="color: #2b91af;"&gt;Storyboard&lt;/span&gt; value)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; obj.SetValue(CloseStoryboardProperty, value);
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; Private Methods
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; Load&amp;#26178;&amp;#12450;&amp;#12491;&amp;#12513;&amp;#12540;&amp;#12471;&amp;#12519;&amp;#12531;&amp;#21462;&amp;#24471;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Storyboard&lt;/span&gt; GetLoadStoryboardByName(&lt;span style="color: #2b91af;"&gt;FrameworkElement&lt;/span&gt; target)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;Storyboard&lt;/span&gt; result = (&lt;span style="color: #2b91af;"&gt;Storyboard&lt;/span&gt;)target.Resources[GetLoadAnimationName(target)];
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; result;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; Close&amp;#26178;&amp;#12450;&amp;#12491;&amp;#12513;&amp;#12540;&amp;#12471;&amp;#12519;&amp;#12531;&amp;#21462;&amp;#24471;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Storyboard&lt;/span&gt; GetCloseStoryboardByName(&lt;span style="color: #2b91af;"&gt;FrameworkElement&lt;/span&gt; target)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;Storyboard&lt;/span&gt; result = (&lt;span style="color: #2b91af;"&gt;Storyboard&lt;/span&gt;)target.Resources[GetCloseAnimationName(target)];
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; result;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;}
&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
ちょっと長いコードですがひとつづつ説明します。&lt;br&gt;
まずView側のXAMLにてアニメーションを設定する添付プロパティを実装します。&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;AttachProperty&lt;/li&gt;
&lt;li&gt;LoadAnimationNameProperty&lt;/li&gt;
&lt;li&gt;CloseAnimationNameProperty&lt;/li&gt;
&lt;li&gt;LoadStoryboardProperty&lt;/li&gt;
&lt;li&gt;CloseStoryboardProperty&lt;/li&gt;
&lt;/ul&gt;
AttachPropertyは、View側よりフェードイン・フェードアウトが設定される事を感知し、View（UserControl）のイベントをアタッチします。アタッチポイントは、添付プロパティのメタデータのPropertyChangedCallback内で行います。&lt;br&gt;
PropertyChangedCallback内では以下のイベントアタッチを行います。&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;ViewのDataContextChangedイベント&lt;/li&gt;
&lt;li&gt;ViiewのLoadedイベント&lt;/li&gt;
&lt;/ul&gt;
DataContextChangedイベントは、DataTemplateによってViewのDataContextプロパティに設定されたViewModelインスタンスを取得する為です。&lt;br&gt;
Loadedイベントは、Viewのフェードインに使用します。&lt;br&gt;
あとの添付プロパティはXAMLより設定される各アニメーション指定用の添付プロパティです。&lt;br&gt;
&lt;br&gt;
まずはじめに、MainWindowViewModelのWorkspaceプロパティにViewModelが設定されると、ViewのDataContextChangeイベントが呼ばれます。&lt;br&gt;
そのViewのDataContextChangedイベントハンドラ内で、ViewのDataContextに設定されているViewModelを取得し、ViewModelのViewCloseイベントをアタッチします。&lt;br&gt;
ViewCloseイベントハンドラではViewのフェードアウトを実行し、ViewModelのOnRequestCloseメソッドをコールし、ViewModelを管理しているMainWindowViewModelへ終了通知を伝えます。&lt;br&gt;
また、ViewCloseイベントハンドラないにてViewのアニメーションを実行する為にViewインスタンスが必要になるので、ViewModelをキーとしたコレクションに一時保持しておきます。&lt;br&gt;
&lt;br&gt;
次にViewの起動時でLoadedイベントが呼ばれます。&lt;br&gt;
ViewのLoadedイベントハンドラ内にてフェードイン用のアニメーションを実行し、Viewが無事フェードインを行いながら起動します。&lt;br&gt;
&lt;br&gt;
Viewでボタンがクリックされると、ViewModelに実装しているコマンドが呼ばれ、ViewCloseイベントが呼ばれます。&lt;br&gt;
その呼ばれたViewCloseイベントのイベントハンドラないにて、一時保持していたコレクションよりViewインスタンスを取得し、フェードアウトを実行します。&lt;br&gt;
ここでフェードアウトで使用しているStoryboardのCompletedイベントにてViewModelのOnRequestCloseメソッドを実行することにより、ViewModelがRequestCloseイベントを発行し、そのイベントをアタッチしているMainWindowViewModelのイベントハンドラが呼ばれることによってViewが終了するようになります。&lt;br&gt;
これで一連の流れは終了です。&lt;br&gt;
&lt;br&gt;
遷移感知ヘルパクラスはViewとViewModelにドップリ依存していますが、この中間ヘルパクラスを使用することによってViewとViewModelの不必要な依存を無くすことが出来ます。&lt;br&gt;
また、ViewModel側もViewCloseイベント発行用のCloseメソッドをコールすればViewを遷移させることが出来るため、よけいな実装を行う必要がなくなります。&lt;br&gt;
&lt;br&gt;
今回の実装はいくつかまだ足りない部分がありますが、とりあえずの実装の形にはなったかなと思います。&lt;br&gt;
添付プロパティを使用したヘルパクラスの実装はいくらでも出来るので、アプリケーションの構築に合わせたものを実装することも可能です。&lt;br&gt;
アニメーションは画像では伝えることが出来ないので添付画像は載せていません。&lt;br&gt;
興味のある方は是非実装して試してみてください。&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
今回の感想として、ヘルパクラスを実装してみた感じ、MVVMパターンではViewとViewModelの橋渡しをするヘルパクラスが多々必要になってくるのかなと思いました。&lt;br&gt;
フェードイン・フェードアウトのような少しのインタラクションを実現するためにも面倒な実装を強いられますが、それが出来たときのアプリケーションの表現の幅は大きいのではないでしょうか。&lt;br&gt;
&lt;br&gt;
今回はMVVMパターンにおけるViewのフェードイン・フェードアウトを実現するためのほんの１例でした。&lt;br&gt;
&lt;br&gt;&lt;img src ="http://blogs.wankuma.com/kzt/aggbug/171852.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuto</dc:creator><title>[WPF] MVVMを使用した場合のViewのフェードアウトの実装方法について</title><link>http://blogs.wankuma.com/kzt/archive/2009/04/16/171537.aspx</link><pubDate>Thu, 16 Apr 2009 21:41:00 GMT</pubDate><guid>http://blogs.wankuma.com/kzt/archive/2009/04/16/171537.aspx</guid><wfw:comment>http://blogs.wankuma.com/kzt/comments/171537.aspx</wfw:comment><comments>http://blogs.wankuma.com/kzt/archive/2009/04/16/171537.aspx#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kzt/comments/commentRss/171537.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kzt/services/trackbacks/171537.aspx</trackback:ping><description>MVVMパターンを使用した場合のViewのフェードアウトについて行き詰まってます・・。&lt;br&gt;
&lt;br&gt;
最近MSDMマガジンに載っていた「&lt;a href="http://msdn.microsoft.com/ja-jp/magazine/dd419663.aspx" target="_blank"&gt;Model-View-ViewModel デザイン パターンによる WPF アプリケーション&lt;/a&gt;」を参考に、MVVMパターンを使用したアプリケーションを作っています。&lt;br&gt;
MVVMパターンはUIとロジックを切り離すとてもいいパターンだと思うのですが、その疎結合さゆえにView側の操作が柔軟に行えない感じがしています。&lt;br&gt;
&lt;br&gt;
現状は参考サイトと同様に、「Window&amp;#215;1」 に対して「View&amp;#215;n」という、１つのWindowの中でViewの切り替えを行う画面遷移方式を取っています。&lt;br&gt;
作っているアプリケーションはViewの遷移時にフェードイン・フェードアウトを行わせようと思っているのですが、Viewのフェードアウトの実装部分で行き詰っています。&lt;br&gt;
&lt;br&gt;
MVVMパターンは「これがパターンだ！」という物はなく、柔軟に構築できるのだと参考サイトにも書いてありましたが、極力ViewとViewModel間での参照を無くしたいのでViewの表示はViewModelインスタンスをDataTemplateにて表示しています。&lt;br&gt;
フェードインに関しては、UserControlを元にViewを作成しているので、UserControlのLoadedイベントをイベントトリガにしてアニメーションを行っているので問題はないのですが、Viewを閉じる（破棄）する際のフェードアウトが上手く作れません。&lt;br&gt;
Unloadedイベントはフェードアウトのイベントトリガとして使用できない（既に要素ツリーから要素が削除されている為）ので、何をトリガとしてフェードアウトを行わせれば良いのか・・・・。&lt;br&gt;
そもそもWPFでのフェードアウトの鉄板的なトリガを自分が分かってないだけなのかな？&lt;br&gt;
&lt;br&gt;
参考サイトを例にとって例をあげると、Viewの起動・終了（実際はViewModelを）を管理しているViewModel（MainWindowViewModel）があります。&lt;br&gt;
その管理しているViewModelより起動されたViewは、そのデータとなるViewModelのイベント通知にて管理しているViewModelに終了通知が送られ、ViewModelの破棄が行われ、Viewの終了となります。&lt;br&gt;
&lt;br&gt;
例えばログイン画面があり、ユーザーIDとパスワード入力後にOKボタンにて検証を行い、正常の場合はそのままログイン画面が終了し、次画面へ遷移する物があったとします。&lt;br&gt;
この場合、OKボタンをClickするとコマンドバインディングによってViewModelのコマンド処理が走り、ここで認証成功の場合、ViewModelよりイベント通知によって元のViewModelへ終了通知が行われますが、それはViewにとっては分からない部分です。&lt;br&gt;
よってViewModelを管理しているViewModelも削除されるViewに対し終了通知を行えないのです。&lt;br&gt;
一応、プロパティトリガの機構を使用して無理やりフェードアウトの実装は行えますが、とても汎用的ではい物で、ましてや開発現場などでは混乱を招く物でしかない実装は一応出来ました。&lt;br&gt;
&lt;br&gt;
その実装方法と言うと、&lt;br&gt;
&lt;br&gt;
- 事前実装 -&lt;br&gt;
１、ViewModel側よりViewへの終了通知用の何かしらのプロパティ（プロパティトリガで使用される）をViewとViewModelでバインドさせておく&lt;br&gt;
２、ViewModel側でViewのフェードアウトアニメーションが終了した場合の終了通知を感知する為の、何かしらのプロパティをViewとViewModelでバインドしておき、Viewよりそのプロパティが変更された場合のプロパティ変更後イベントをViewModel側で実装しておく&lt;br&gt;
&lt;br&gt;
- 処理順序 -&lt;br&gt;
１、ViewのOKボタンクリック時に呼ばれるViewModel側のコマンド処理内にて、終了通知用のプロパティを変更し、View側へ通知する&lt;br&gt;
２、View側では1、で変更されたプロパティを元に、プロパティトリガを使用してフェードアウトアニメーションを行い、アニメーション終了時にアニメーション終了後通知用のプロパティを変更し、View側へ通知する&lt;br&gt;
３、ViewModel側で２、で変更されたプロパティのセッター内にてプロパティ変更後のイベントを発行する&lt;br&gt;
４．ViewModelを管理しているViewModelで３、で発行されたイベントのイベントハンドラ内にてViewModelの破棄を行い次画面へ遷移させる&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
こんな感じです。&lt;br&gt;
実装するととても使いづらく、たまったものじゃありませんでした・・。&lt;br&gt;
そもそもある動作を行わす時に、プロパティ操作で事を運ばすって事がスマートな感じではないし。&lt;br&gt;
MVVMを使用した場合のViewとViewModel間での動作に関わる通知機構で良い実装ってどのように作るのでしょうかね？&lt;br&gt;
&lt;br&gt;
もし「俺はこんな感じで実装している」や「MVVMを使用した場合のViewのフェードアウトはこうやるだろ～」みたいな事があれば教えてください。m(_  _)m&lt;br&gt;
&lt;br&gt;
&lt;br&gt;&lt;img src ="http://blogs.wankuma.com/kzt/aggbug/171537.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuto</dc:creator><title>[WPF][TIPS] データバインドの最適化</title><link>http://blogs.wankuma.com/kzt/archive/2009/04/16/171516.aspx</link><pubDate>Thu, 16 Apr 2009 13:33:00 GMT</pubDate><guid>http://blogs.wankuma.com/kzt/archive/2009/04/16/171516.aspx</guid><wfw:comment>http://blogs.wankuma.com/kzt/comments/171516.aspx</wfw:comment><comments>http://blogs.wankuma.com/kzt/archive/2009/04/16/171516.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kzt/comments/commentRss/171516.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kzt/services/trackbacks/171516.aspx</trackback:ping><description>&lt;P&gt;WPFのデータバインドで、XAMLで記述する場合の最適化に関する事が下記の書籍に載っていました。&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;IFRAME style="WIDTH: 120px; HEIGHT: 240px" marginWidth=0 marginHeight=0 src="http://rcm-jp.amazon.co.jp/e/cm?t=kazutoprogram-22&amp;amp;o=9&amp;amp;p=8&amp;amp;l=as1&amp;amp;asins=4798114200&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" frameBorder=0 scrolling=no&gt;&lt;/IFRAME&gt;&lt;/P&gt;&lt;BR&gt;&lt;BR&gt;XAMLでのデータバインドでは主に２つの記述方法があります。&lt;BR&gt;&lt;BR&gt;・クラス修飾なしのプロパティ識別子指定&lt;BR&gt;・クラス修飾ありのプロパティ識別子指定&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;「クラス修飾なしのプロパティ識別子指定」とはデータソースのプロパティ名をそのまま指定する方法です。&lt;BR&gt;&lt;BR&gt;- クラス修飾なしのプロパティ識別子指定 -&lt;BR&gt;
&lt;DIV style="FONT-SIZE: 8pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: メイリオ"&gt;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;TextBlock&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt; Text&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Binding&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;Name}" /&amp;gt;&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp; &lt;/DIV&gt;&lt;BR&gt;&lt;BR&gt;「クラス修飾ありのプロパティ識別子指定」とはデータソース名とプロパティ名を指定する方法です。&lt;BR&gt;&lt;BR&gt;- クラス修飾ありのプロパティ識別子指定 -&lt;BR&gt;
&lt;DIV style="FONT-SIZE: 8pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: メイリオ"&gt;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;TextBlock&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt; Text&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Binding&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;(Person.Name)}" /&amp;gt;&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp; &lt;/DIV&gt;&lt;BR&gt;&lt;BR&gt;これら２つの指定方法は同じ結果になりますが、データバインドにおける内部動作が異なります。クラス修飾がない場合は、内部で指定されたプロパティ名をリフレクションを使用し検索にいきます。&lt;BR&gt;WPFではデータバインドが頻繁に使用される事と、リフレクションはオーバーヘッドが大きい事から、クラス修飾ありのプロパティ識別子指定の最適化は効果が大きいのではないでしょうか。&lt;BR&gt;&lt;img src ="http://blogs.wankuma.com/kzt/aggbug/171516.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuto</dc:creator><title>[WPF] WPF入門 ～コントロール [TextBlock]～</title><link>http://blogs.wankuma.com/kzt/archive/2009/04/14/171357.aspx</link><pubDate>Tue, 14 Apr 2009 00:41:00 GMT</pubDate><guid>http://blogs.wankuma.com/kzt/archive/2009/04/14/171357.aspx</guid><wfw:comment>http://blogs.wankuma.com/kzt/comments/171357.aspx</wfw:comment><comments>http://blogs.wankuma.com/kzt/archive/2009/04/14/171357.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kzt/comments/commentRss/171357.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kzt/services/trackbacks/171357.aspx</trackback:ping><description>今回は&lt;a href="http://msdn.microsoft.com/ja-jp/library/system.windows.controls.textblock.aspx" target="_blank"&gt;TextBlock&lt;/a&gt;（System.Windows.Controls.TextBlock）です。&lt;br&gt;
まずはMSDNの説明を見てみましょう。&lt;br&gt;
&lt;br&gt;
&lt;div class="excerpt"&gt;
少量のフロー コンテンツを表示する軽量コントロールを提供します。
&lt;/div&gt;
&lt;br&gt;
TextBlockコントロールは少量のフローコンテンツを表示する軽量コントロールと説明されています。&lt;br&gt;
少量のフローコンテンツとはどのようなものでしょうか？まずはTextBlockの簡単な使用例を見てみましょう。&lt;br&gt;
&lt;br&gt;
- XAML -&lt;br&gt;
&lt;div class="code"&gt;
&lt;div style="font-family: メイリオ; font-size: 8pt; color: black; background: white;"&gt;
&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Window&lt;/span&gt;&lt;span style="color: red;"&gt; x&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;Class&lt;/span&gt;&lt;span style="color: blue;"&gt;="Window1"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;x&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; Title&lt;/span&gt;&lt;span style="color: blue;"&gt;="Window1"&lt;/span&gt;&lt;span style="color: red;"&gt; Height&lt;/span&gt;&lt;span style="color: blue;"&gt;="300"&lt;/span&gt;&lt;span style="color: red;"&gt; Width&lt;/span&gt;&lt;span style="color: blue;"&gt;="300"&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;TextBlock&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;TextBlock&amp;#12395;&amp;#12424;&amp;#12387;&amp;#12390;&amp;#12486;&amp;#12461;&amp;#12473;&amp;#12488;&amp;#12434;&amp;#34920;&amp;#31034;&amp;#12375;&amp;#12390;&amp;#12356;&amp;#12414;&amp;#12377;&amp;#12290;&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;TextBlock&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;TextBlock&lt;/span&gt;&lt;span style="color: red;"&gt; Text&lt;/span&gt;&lt;span style="color: blue;"&gt;="TextBlock&amp;#12395;&amp;#12424;&amp;#12387;&amp;#12390;&amp;#12486;&amp;#12461;&amp;#12473;&amp;#12488;&amp;#12434;&amp;#34920;&amp;#31034;&amp;#12375;&amp;#12390;&amp;#12356;&amp;#12414;&amp;#12377;&amp;#12290;" /&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Window&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;img src="http://kzt.wankuma.com/site/special/2009/04/TextBlock_1.jpg" /&gt;&lt;br&gt;
&lt;br&gt;
上記例では「TextBlockによってテキストを表示しています。」という文字列をTextBlockコントロールのコンテンツ構文にて表示している例と、TextBlockコントロールの&lt;a href="http://msdn.microsoft.com/ja-jp/library/system.windows.controls.textblock.text.aspx" target="_blank"&gt;Text&lt;/a&gt;プロパティを使用して表示している例です。&lt;br&gt;
使用例を見る限りでは、TextBlockコントロールのコンテンツプロパティはTextプロパティかと思いますが、TextBlockコントロールのコンテンツプロパティは&lt;a href="http://msdn.microsoft.com/ja-jp/library/system.windows.controls.textblock.inlines.aspx" target="_blank"&gt;Inlines&lt;/a&gt;プロパティとなっています。&lt;br&gt;
Inlinesプロパティは&lt;a href="http://msdn.microsoft.com/ja-jp/library/system.windows.documents.inline.aspx" target="_blank"&gt;Inlineクラス&lt;/a&gt;（System.Windows.Documents.Inline）クラスを格納するコレクションクラスであり、このInlineクラスというのがMSDNの説明で書かれている「フローコンテンツ」と呼ばれる要素になっています。&lt;br&gt;
WPFではさまざまなフローコンテンツがあり、すべてInlineクラスを抽象クラスとして実装されています。このさまざまフローコンテンツを使用する事により、柔軟なテキストの表示をTextBlockコントロールで行えるようになります。&lt;br&gt;
ではフローコンテンツを使用してテキストを表示する例を見てみましょう。&lt;br&gt;
&lt;br&gt;
- XAML -&lt;br&gt;
&lt;div class="code"&gt;
&lt;div style="font-family: メイリオ; font-size: 8pt; color: black; background: white;"&gt;
&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Window&lt;/span&gt;&lt;span style="color: red;"&gt; x&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;Class&lt;/span&gt;&lt;span style="color: blue;"&gt;="Window1"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;x&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; Title&lt;/span&gt;&lt;span style="color: blue;"&gt;="Window1"&lt;/span&gt;&lt;span style="color: red;"&gt; Height&lt;/span&gt;&lt;span style="color: blue;"&gt;="300"&lt;/span&gt;&lt;span style="color: red;"&gt; Width&lt;/span&gt;&lt;span style="color: blue;"&gt;="300"&lt;/span&gt;&lt;span style="color: red;"&gt; Loaded&lt;/span&gt;&lt;span style="color: blue;"&gt;="Window_Loaded"&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;TextBlock&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Bold&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;&amp;#12371;&amp;#12428;&amp;#12399;&amp;#22826;&amp;#23383;&amp;#12391;&amp;#12377;&amp;#12290;&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Bold&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;LineBreak&lt;/span&gt;&lt;span style="color: blue;"&gt; /&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#12371;&amp;#12428;&amp;#12399;&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Italic&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Italic Font&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Italic&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;&amp;#12391;&amp;#12377;&amp;#12290;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;LineBreak&lt;/span&gt;&lt;span style="color: blue;"&gt; /&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;TextBlock&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Window&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;img src="http://kzt.wankuma.com/site/special/2009/04/TextBlock_2.jpg" /&gt;&lt;br&gt;
&lt;br&gt;
上記例では改行を表すフローコンテンツの&lt;a href="http://msdn.microsoft.com/ja-jp/library/system.windows.documents.linebreak.aspx" target="_blank"&gt;LineBreak&lt;/a&gt;クラスと、太字のフォントで表示するフローコンテンツの&lt;a href="http://msdn.microsoft.com/ja-jp/library/system.windows.documents.bold.aspx" target="_blank"&gt;Bold&lt;/a&gt;クラスと、斜体のフォントで表示するフローコンテンツの&lt;a href="http://msdn.microsoft.com/ja-jp/library/system.windows.documents.italic.aspx" target="_blank"&gt;Italic&lt;/a&gt;クラスを使用した例です。&lt;br&gt;
フローコンテンツはそれ単体レベルにてフォントサイズや前景色や背景色など設定する事が出来ます。上記例のコードにフローコンテンツ単位でプロパティを設定した例を見てみましょう。&lt;br&gt;
&lt;br&gt;
- XAML -&lt;br&gt;
&lt;div class="code"&gt;
&lt;div style="font-family: メイリオ; font-size: 8pt; color: black; background: white;"&gt;
&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Window&lt;/span&gt;&lt;span style="color: red;"&gt; x&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;Class&lt;/span&gt;&lt;span style="color: blue;"&gt;="Window1"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;x&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; Title&lt;/span&gt;&lt;span style="color: blue;"&gt;="Window1"&lt;/span&gt;&lt;span style="color: red;"&gt; Height&lt;/span&gt;&lt;span style="color: blue;"&gt;="300"&lt;/span&gt;&lt;span style="color: red;"&gt; Width&lt;/span&gt;&lt;span style="color: blue;"&gt;="300"&lt;/span&gt;&lt;span style="color: red;"&gt; Loaded&lt;/span&gt;&lt;span style="color: blue;"&gt;="Window_Loaded"&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;TextBlock&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Bold&lt;/span&gt;&lt;span style="color: red;"&gt; Foreground&lt;/span&gt;&lt;span style="color: blue;"&gt;="Blue"&lt;/span&gt;&lt;span style="color: red;"&gt; FontSize&lt;/span&gt;&lt;span style="color: blue;"&gt;="40"&lt;/span&gt;&lt;span style="color: red;"&gt; FontFamily&lt;/span&gt;&lt;span style="color: blue;"&gt;="&amp;#65325;&amp;#65331; &amp;#26126;&amp;#26397;"&amp;gt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;&amp;#12371;&amp;#12428;&amp;#12399;&amp;#22826;&amp;#23383;&amp;#12391;&amp;#12377;&amp;#12290;&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Bold&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;LineBreak&lt;/span&gt;&lt;span style="color: blue;"&gt; /&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#12371;&amp;#12428;&amp;#12399;&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Italic&lt;/span&gt;&lt;span style="color: red;"&gt; Foreground&lt;/span&gt;&lt;span style="color: blue;"&gt;="Pink"&lt;/span&gt;&lt;span style="color: red;"&gt; FontSize&lt;/span&gt;&lt;span style="color: blue;"&gt;="25"&lt;/span&gt;&lt;span style="color: red;"&gt; FontFamily&lt;/span&gt;&lt;span style="color: blue;"&gt;="Tahoma"&amp;gt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Italic Font&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Italic&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;&amp;#12391;&amp;#12377;&amp;#12290;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;LineBreak&lt;/span&gt;&lt;span style="color: blue;"&gt; /&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;TextBlock&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Window&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;img src="http://kzt.wankuma.com/site/special/2009/04/TextBlock_3.jpg" /&gt;&lt;br&gt;
&lt;br&gt;
このように、TextBlockコントロールではフローコンテンツを使用して柔軟なテキストの表示を行うことが出来ます。&lt;br&gt;
フローコンテンツは複数提供されていますので、その詳細は&lt;a href="http://msdn.microsoft.com/ja-jp/library/ms753113.aspx" target="_blank"&gt;こちら&lt;/a&gt;を拝見してください。&lt;br&gt;
&lt;br&gt;
TextBlockコントロールはMSDNでの説明でも書かれている通りに、少量のフローコンテンツを表示する為に設計されたコントロールです。&lt;br&gt;
大量のフローコンテンツを使用したり、沢山の改行を行うようような場合にはTextBlockコントロールは向いていません。&lt;br&gt;
そのような場合には&lt;a href="http://msdn.microsoft.com/ja-jp/library/system.windows.documents.flowdocument.aspx" target="_blank"&gt;FlowDocument&lt;/a&gt;クラスを使用するとTextBlockコントロールより優れたパフォーマンスが得られます。&lt;br&gt;
また、コントロールラベルや装飾のないプレーンテキストを表示する場合であるならばTextBlockコントロールより少量のリソースで済む&lt;a href="http://msdn.microsoft.com/ja-jp/library/system.windows.controls.label.aspx" target="_blank"&gt;Label&lt;/a&gt;コントロールを使用するのも良いでしょう。&lt;br&gt;
TextBlockコントロールはWPFでは使用頻度の高いコントロールですので、是非使用できるようになりましょう。&lt;br&gt;
&lt;br&gt;
今回は「TextBlock」コントロールでした。&lt;br&gt;
&lt;br&gt;
to be continue・・・&lt;br&gt;&lt;img src ="http://blogs.wankuma.com/kzt/aggbug/171357.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kazuto</dc:creator><title>[WPF] WPF入門 ～コントロール [RepeatButton]～</title><link>http://blogs.wankuma.com/kzt/archive/2009/04/02/170628.aspx</link><pubDate>Thu, 02 Apr 2009 01:09:00 GMT</pubDate><guid>http://blogs.wankuma.com/kzt/archive/2009/04/02/170628.aspx</guid><wfw:comment>http://blogs.wankuma.com/kzt/comments/170628.aspx</wfw:comment><comments>http://blogs.wankuma.com/kzt/archive/2009/04/02/170628.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kzt/comments/commentRss/170628.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kzt/services/trackbacks/170628.aspx</trackback:ping><description>今回は&lt;a href="http://msdn.microsoft.com/ja-jp/library/system.windows.controls.primitives.repeatbutton.aspx" target="_blank"&gt;RepeatButton&lt;/a&gt;（System.Windows.Controls.RepeatButton）です。&lt;br&gt;
まずはMSDNの説明を見てみましょう。&lt;br&gt;
&lt;br&gt;
&lt;div class="excerpt"&gt;
コントロールが押されてから離されるまで、その Click イベントを繰り返し発生させるコントロール
&lt;/div&gt;
&lt;br&gt;
説明の通り、RepeatButtonコントロールはボタンを押下中に連続してClickイベントを発生させるコントロールです。&lt;br&gt;
まずは実装例を見てみましょう。&lt;br&gt;
&lt;br&gt;
- XAML -&lt;br&gt;
&lt;div class="code"&gt;
&lt;div style="font-family: メイリオ; font-size: 8pt; color: black; background: white;"&gt;
&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Window&lt;/span&gt;&lt;span style="color: red;"&gt; x&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;Class&lt;/span&gt;&lt;span style="color: blue;"&gt;="Window1"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;x&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt; Title&lt;/span&gt;&lt;span style="color: blue;"&gt;="Window1"&lt;/span&gt;&lt;span style="color: red;"&gt; SizeToContent&lt;/span&gt;&lt;span style="color: blue;"&gt;="WidthAndHeight"&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Slider&lt;/span&gt;&lt;span style="color: red;"&gt; Name&lt;/span&gt;&lt;span style="color: blue;"&gt;="Sample_Slider"&lt;/span&gt;&lt;span style="color: red;"&gt; Minimum&lt;/span&gt;&lt;span style="color: blue;"&gt;="0"&lt;/span&gt;&lt;span style="color: red;"&gt; Maximum&lt;/span&gt;&lt;span style="color: blue;"&gt;="10"&lt;/span&gt;&lt;span style="color: red;"&gt; Margin&lt;/span&gt;&lt;span style="color: blue;"&gt;="5" /&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color: red;"&gt; Orientation&lt;/span&gt;&lt;span style="color: blue;"&gt;="Horizontal"&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;RepeatButton&lt;/span&gt;&lt;span style="color: red;"&gt; Delay&lt;/span&gt;&lt;span style="color: blue;"&gt;="1000"&lt;/span&gt;&lt;span style="color: red;"&gt; Interval&lt;/span&gt;&lt;span style="color: blue;"&gt;="1000"&lt;/span&gt; 
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Margin&lt;/span&gt;&lt;span style="color: blue;"&gt;="5"&lt;/span&gt;&lt;span style="color: red;"&gt; Click&lt;/span&gt;&lt;span style="color: blue;"&gt;="Down_Click"&lt;/span&gt;&lt;span style="color: red;"&gt; Width&lt;/span&gt;&lt;span style="color: blue;"&gt;="60"&amp;gt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;&amp;#9660;&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;RepeatButton&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;RepeatButton&lt;/span&gt;&lt;span style="color: red;"&gt; Delay&lt;/span&gt;&lt;span style="color: blue;"&gt;="1000"&lt;/span&gt;&lt;span style="color: red;"&gt; Interval&lt;/span&gt;&lt;span style="color: blue;"&gt;="1000"&lt;/span&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Margin&lt;/span&gt;&lt;span style="color: blue;"&gt;="5"&lt;/span&gt;&lt;span style="color: red;"&gt; Click&lt;/span&gt;&lt;span style="color: blue;"&gt;="Up_Click"&lt;/span&gt;&lt;span style="color: red;"&gt; Width&lt;/span&gt;&lt;span style="color: blue;"&gt;="60"&amp;gt;&lt;/span&gt;&lt;span style="color: #a31515;"&gt;&amp;#9650;&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;RepeatButton&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: #a31515;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;span style="color: blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;Window&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
- VB -&lt;br&gt;
&lt;div class="code"&gt;
&lt;div style="font-family: メイリオ; font-size: 8pt; color: black; background: white;"&gt;
&lt;span style="color: blue;"&gt;Class&lt;/span&gt; Window1 
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Private&lt;/span&gt; &lt;span style="color: blue;"&gt;Sub&lt;/span&gt; Down_Click(&lt;span style="color: blue;"&gt;ByVal&lt;/span&gt; sender &lt;span style="color: blue;"&gt;As&lt;/span&gt; System.Object, &lt;span style="color: blue;"&gt;ByVal&lt;/span&gt; e &lt;span style="color: blue;"&gt;As&lt;/span&gt; System.Windows.RoutedEventArgs)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Sample_Slider.Value -= 1
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;End&lt;/span&gt; &lt;span style="color: blue;"&gt;Sub&lt;/span&gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Private&lt;/span&gt; &lt;span style="color: blue;"&gt;Sub&lt;/span&gt; Up_Click(&lt;span style="color: blue;"&gt;ByVal&lt;/span&gt; sender &lt;span style="color: blue;"&gt;As&lt;/span&gt; System.Object, &lt;span style="color: blue;"&gt;ByVal&lt;/span&gt; e &lt;span style="color: blue;"&gt;As&lt;/span&gt; System.Windows.RoutedEventArgs)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Sample_Slider.Value += 1
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;End&lt;/span&gt; &lt;span style="color: blue;"&gt;Sub&lt;/span&gt;
&lt;br&gt;&lt;span style="color: blue;"&gt;End&lt;/span&gt; &lt;span style="color: blue;"&gt;Class&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
- C# -&lt;br&gt;
&lt;div class="code"&gt;
&lt;div style="font-family: メイリオ; font-size: 8pt; color: black; background: white;"&gt;
&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;partial&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Window1&lt;/span&gt; : &lt;span style="color: #2b91af;"&gt;Window&lt;/span&gt;
&lt;br&gt;{
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; Window1()
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeComponent();
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Down_Click(&lt;span style="color: blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af;"&gt;RoutedEventArgs&lt;/span&gt; e)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Sample_Slider.Value--;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Up_Click(&lt;span style="color: blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af;"&gt;RoutedEventArgs&lt;/span&gt; e)
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Sample_Slider.Value++;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;br&gt;}
&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;img src="http://kzt.wankuma.com/site/special/2009/04/RepeatButton_1.jpg" /&gt;&lt;br&gt;
&lt;br&gt;
RepeatButtonにはボタン押下後のClickイベントが発生するまでの時間（ミリ秒単位）を設定する&lt;a href="http://msdn.microsoft.com/ja-jp/library/system.windows.controls.primitives.repeatbutton.delay.aspx" target="_blank"&gt;Delay&lt;/a&gt;プロパティと、Clickイベントの繰り返し間隔の時間（ミリ秒単位）を設定する&lt;a href="http://msdn.microsoft.com/ja-jp/library/system.windows.controls.primitives.repeatbutton.interval.aspx" target="_blank"&gt;Interval&lt;/a&gt;プロパティがあります。&lt;br&gt;
上記例では２つのRepeatButtonにDelayプロパティとIntervalプロパティに１秒の時間を設定しています。簡単にその効果を出すために、Sliderコントロールを配置し、各RepeatButtonのClickイベントハンドラにてSliderコントロールの値を加減しています。実装例の画像では丁度５秒経過した時点でボタン押下を止めた画像です。&lt;br&gt;
&lt;br&gt;
RepeatButtonコントロールは連続するClickイベントの特性を活かして、ボリュームコントロールのボタン等に使用される事があります。&lt;br&gt;
実装例からも分かるとおり、とても簡単なコントロールです。&lt;br&gt;
&lt;br&gt;
今回は「RepeatButton」コントロールでした。&lt;br&gt;
&lt;br&gt;
to be continue・・・&lt;br&gt;&lt;img src ="http://blogs.wankuma.com/kzt/aggbug/170628.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>