<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>高橋 忍のブログ : WPF</title><link>http://blogs.msdn.com/shintak/archive/tags/WPF/default.aspx</link><description>Tags: WPF</description><dc:language>ja-JP</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>dependency な一日</title><link>http://blogs.msdn.com/shintak/archive/2009/04/10/9543439.aspx</link><pubDate>Fri, 10 Apr 2009 19:00:33 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9543439</guid><dc:creator>shintak</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/shintak/comments/9543439.aspx</comments><wfw:commentRss>http://blogs.msdn.com/shintak/commentrss.aspx?PostID=9543439</wfw:commentRss><description>&lt;p&gt;今日は同じエバンジェリストの&lt;a href="http://blogs.msdn.com/hiroyuk/"&gt;川西さん&lt;/a&gt;と二人、一日Dependency Property に振り回されていました。ああ、書ける。こうは駄目。この組み合わせはOKとか。カスタムコントロールとか作っていると結構複雑になってきます。&lt;/p&gt;  &lt;p&gt;結論としては、Dependency Property は結構簡単だということ。（おいおいｗ）&lt;/p&gt;  &lt;p&gt;結構便利なDependency Property はWPFらしいプログラミングのキーワード。でも実装が面倒。（ってほど面倒ではないですけどね）&lt;a href="http://blogs.msdn.com/hiroyuk/"&gt;川西さん&lt;/a&gt;はこつこつと書きますが、私はツールで楽して..タイプなので、お気に入りはコードスニペット。&lt;/p&gt;  &lt;p&gt;Propdp と打って Tab Tab でぱぱっと Dependency Property です。 &lt;/p&gt;  &lt;p&gt;&lt;font color="#0080ff"&gt;public int MyProperty     &lt;br /&gt;{      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; get { return (int)GetValue(MyPropertyProperty); }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; set { SetValue(MyPropertyProperty, value); }      &lt;br /&gt;} &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0080ff"&gt;public static readonly DependencyProperty MyPropertyProperty =     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DependencyProperty.Register(&amp;quot;MyProperty&amp;quot;, typeof(int), typeof(ownerclass), new UIPropertyMetadata(0));&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;が、どうもうまくいかないことが多く困っていたのですが、結局一番陥りやすいのが最後のオプションだったんですね。&lt;/p&gt;  &lt;p&gt;&lt;font color="#0080ff"&gt;new UIPropertyMetadata(0)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;この 0 は、この Dependency Property の初期値だったわけで、int 型ならいいわけですが、String や Double のときは “” とか、 0.0 とかにしてやらないといけないんですよね。で、ちゃんとやらないと、コンパイルはうまく行っても実行時に初期化エラーになっちゃうんですよね。これでよく悩んでた。&lt;/p&gt;  &lt;p&gt;Dependency Property には、Callback 関数も設定することができますが、この関数のポインタも&amp;#160; UIPropertyMetadata の引数に入れちゃうのは素晴らしいです。ということで Dependency Property のカギはこのUIPropertyMetadata ということで。&lt;/p&gt;  &lt;p&gt;Dependency Property は Blend と組み合わせると大変便利で楽しい機能。積極的に使いたいものです。&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9543439" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/shintak/archive/tags/_8B957A76C5603158_/default.aspx">開発情報</category><category domain="http://blogs.msdn.com/shintak/archive/tags/WPF/default.aspx">WPF</category></item><item><title>UX イメージ動画 掲載</title><link>http://blogs.msdn.com/shintak/archive/2009/03/07/9463976.aspx</link><pubDate>Sat, 07 Mar 2009 09:44:17 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9463976</guid><dc:creator>shintak</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/shintak/comments/9463976.aspx</comments><wfw:commentRss>http://blogs.msdn.com/shintak/commentrss.aspx?PostID=9463976</wfw:commentRss><description>&lt;p&gt;UXを意識したアプリケーションはどういったものか？そういったアプリケーションをまとめてイメージ動画として公開しました。&lt;/p&gt;  &lt;p&gt;私のセッションではよくオープニングやセッション前に流していることが多いですが、なかなか見ごたえがあると思います。&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Project UX &lt;/b&gt;&lt;b&gt;サイト: &lt;/b&gt;&lt;b&gt;&lt;a href="http://www.microsoft.com/japan/powerpro/projectux/default.mspx"&gt;http://www.microsoft.com/japan/powerpro/projectux/default.mspx&lt;/a&gt;&lt;/b&gt; &lt;/p&gt;  &lt;p&gt;※上記ページの中央に表示されている “UX イメージ動画” をクリックするとビデオが再生されます &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/shintak/WindowsLiveWriter/UX_DD45/clip_image003_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image003" border="0" alt="clip_image003" src="http://blogs.msdn.com/blogfiles/shintak/WindowsLiveWriter/UX_DD45/clip_image003_thumb.jpg" width="424" height="235" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;うちのアプリはもっとすごいよ！というものがあれば、ぜひお声掛けくださいね。&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9463976" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/shintak/archive/tags/WPF/default.aspx">WPF</category></item><item><title>【WPF】 Stylng Microsoft DataGrid</title><link>http://blogs.msdn.com/shintak/archive/2009/02/16/9425213.aspx</link><pubDate>Mon, 16 Feb 2009 05:35:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9425213</guid><dc:creator>shintak</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/shintak/comments/9425213.aspx</comments><wfw:commentRss>http://blogs.msdn.com/shintak/commentrss.aspx?PostID=9425213</wfw:commentRss><description>&lt;p&gt;こちらに DataGrid コントロールのデザインについてまとめてあります。なかなかわかりやすいですね。&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.msdn.com/jaimer/archive/2009/01/20/styling-microsoft-s-wpf-datagrid.aspx" href="http://blogs.msdn.com/jaimer/archive/2009/01/20/styling-microsoft-s-wpf-datagrid.aspx"&gt;Styling Microsoft’s WPF datagrid-microsoft-s-wpf-datagrid.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;記事にもありますが、これで100％ではないですが、これだけでもかなり便利な情報がまとまっています。&lt;/p&gt;  &lt;p&gt;   &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr align="center" bgcolor="#90ee90"&gt;         &lt;td&gt;&lt;b&gt;プロパティ&lt;/b&gt;&lt;/td&gt;          &lt;td&gt;&lt;b&gt;型&lt;/b&gt;&amp;#160;&lt;/td&gt;          &lt;td&gt;&lt;b&gt;値&lt;/b&gt;&lt;/td&gt;          &lt;td&gt;&lt;b&gt;デフォルト値&lt;/b&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;Alternating-RowBackground &lt;/td&gt;          &lt;td valign="top"&gt;Brush &lt;/td&gt;          &lt;td valign="top"&gt;Any Brush &lt;/td&gt;          &lt;td valign="top"&gt;Null &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;Background &lt;/td&gt;          &lt;td valign="top"&gt;Brush &lt;/td&gt;          &lt;td valign="top"&gt;Any Brush &lt;/td&gt;          &lt;td valign="top"&gt;Theme default &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;ColumnHeaderHeight &lt;/td&gt;          &lt;td valign="top"&gt;Double &lt;/td&gt;          &lt;td valign="top"&gt;0 to any positive double &lt;/td&gt;          &lt;td valign="top"&gt;NaN &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;ColumnHeaderStyle&lt;/td&gt;          &lt;td valign="top"&gt;Style &lt;/td&gt;          &lt;td valign="top"&gt;Any Style &lt;/td&gt;          &lt;td valign="top"&gt;Null &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;ColumnWidth &lt;/td&gt;          &lt;td valign="top"&gt;DataGridLength &lt;/td&gt;          &lt;td valign="top"&gt;0 to any positive double, Auto, *, SizeToCells, SizeToHeader &lt;/td&gt;          &lt;td valign="top"&gt;SizeTo-Header &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;HeadersVisibility &lt;/td&gt;          &lt;td valign="top"&gt;DataGridHeaders-Visibility &lt;/td&gt;          &lt;td valign="top"&gt;All, Row, Column, None &lt;/td&gt;          &lt;td valign="top"&gt;All &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;MaxColumnWidth &lt;/td&gt;          &lt;td valign="top"&gt;Double &lt;/td&gt;          &lt;td valign="top"&gt;0 to any positive double &lt;/td&gt;          &lt;td valign="top"&gt;Positive Infinity &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;MaxRowHeight &lt;/td&gt;          &lt;td valign="top"&gt;Double &lt;/td&gt;          &lt;td valign="top"&gt;0 to any positive double &lt;/td&gt;          &lt;td valign="top"&gt;Positive Infinity &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;MinColumnWidth &lt;/td&gt;          &lt;td valign="top"&gt;Double &lt;/td&gt;          &lt;td valign="top"&gt;0 to any positive double &lt;/td&gt;          &lt;td valign="top"&gt;20 &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;MinRowHeight &lt;/td&gt;          &lt;td valign="top"&gt;Double &lt;/td&gt;          &lt;td valign="top"&gt;0 to any positive double &lt;/td&gt;          &lt;td valign="top"&gt;0 &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;RowBackground &lt;/td&gt;          &lt;td valign="top"&gt;Brush &lt;/td&gt;          &lt;td valign="top"&gt;Any Brush &lt;/td&gt;          &lt;td valign="top"&gt;Theme default &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;RowDetails-VisibilityMode &lt;/td&gt;          &lt;td valign="top"&gt;DataGrid-RowDetails-VisibilityMode &lt;/td&gt;          &lt;td valign="top"&gt;Visible, Visible-WhenSelected, Collapsed &lt;/td&gt;          &lt;td valign="top"&gt;VisibleWhen-Selected &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;RowHeaders-            &lt;br /&gt;Width &lt;/td&gt;          &lt;td valign="top"&gt;Double &lt;/td&gt;          &lt;td valign="top"&gt;0 to any positive double &lt;/td&gt;          &lt;td valign="top"&gt;NaN &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;RowHeight &lt;/td&gt;          &lt;td valign="top"&gt;Double &lt;/td&gt;          &lt;td valign="top"&gt;0 to any positive double &lt;/td&gt;          &lt;td valign="top"&gt;NaN &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;AlternationCount&lt;/td&gt;          &lt;td valign="top"&gt;int&lt;/td&gt;          &lt;td valign="top"&gt;2+ &lt;/td&gt;          &lt;td valign="top"&gt;coerced to 2&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;GridLinesVisibility&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://WPFToolkit:3.5.31016.1:31bf3856ad364e35/Microsoft.Windows.Controls.DataGridGridLinesVisibility"&gt;&lt;/a&gt;&lt;/td&gt;          &lt;td valign="top"&gt;DataGridGridLines-Visibility&lt;/td&gt;          &lt;td valign="top"&gt;All, Horizontal,            &lt;br /&gt;Vertical, None&lt;/td&gt;          &lt;td valign="top"&gt;All &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;Horizontal-            &lt;br /&gt;GridLinesBrush&lt;/td&gt;          &lt;td valign="top"&gt;Brush&lt;/td&gt;          &lt;td valign="top"&gt;Any Brush&lt;/td&gt;          &lt;td valign="top"&gt;Black(via metadata)&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;VerticalGrid-LinesBrush&lt;/td&gt;          &lt;td valign="top"&gt;Brush &lt;/td&gt;          &lt;td valign="top"&gt;Any Brush&lt;/td&gt;          &lt;td valign="top"&gt;Black(via metadata)&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;ItemTemplate &lt;/td&gt;          &lt;td valign="top"&gt;DataTemplate &lt;/td&gt;          &lt;td valign="top"&gt;Any DataTemplate &lt;/td&gt;          &lt;td valign="top"&gt;Null &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;RowDetails-Template &lt;/td&gt;          &lt;td valign="top"&gt;DataTemplate &lt;/td&gt;          &lt;td valign="top"&gt;Any DataTemplate &lt;/td&gt;          &lt;td valign="top"&gt;Null &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;CellStyle &lt;/td&gt;          &lt;td valign="top"&gt;Style &lt;/td&gt;          &lt;td valign="top"&gt;Any Style &lt;/td&gt;          &lt;td valign="top"&gt;Null &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;ItemContainer-Style &lt;/td&gt;          &lt;td valign="top"&gt;Style &lt;/td&gt;          &lt;td valign="top"&gt;Any Style &lt;/td&gt;          &lt;td valign="top"&gt;Null &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;RowHeaderStyle &lt;/td&gt;          &lt;td valign="top"&gt;Style &lt;/td&gt;          &lt;td valign="top"&gt;Any Style &lt;/td&gt;          &lt;td valign="top"&gt;Null &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;RowStyle &lt;/td&gt;          &lt;td valign="top"&gt;Style &lt;/td&gt;          &lt;td valign="top"&gt;Any Style &lt;/td&gt;          &lt;td valign="top"&gt;Null &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;Style &lt;/td&gt;          &lt;td valign="top"&gt;Style &lt;/td&gt;          &lt;td valign="top"&gt;Any Style &lt;/td&gt;          &lt;td valign="top"&gt;Null &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;Template &lt;/td&gt;          &lt;td valign="top"&gt;ControlTemplate &lt;/td&gt;          &lt;td valign="top"&gt;ControlTemplate TargetType=Datagrid&lt;/td&gt;          &lt;td valign="top"&gt;Null &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;abc-defg の表記はページ幅の都合のため - を入れてありますが、本来は - 無しの abcdefg となります。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/shintak/WindowsLiveWriter/WPFStylngMicrosoftDataGrid_A2CD/image_2.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="273" alt="image" src="http://blogs.msdn.com/blogfiles/shintak/WindowsLiveWriter/WPFStylngMicrosoftDataGrid_A2CD/image_thumb.png" width="500" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;各プロパティの詳細についてはまた別途、もしくは参照記事でどうぞｗ。&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9425213" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/shintak/archive/tags/WPF/default.aspx">WPF</category></item><item><title>Expression Blend SP1 での問題 のもうひとつの解決法</title><link>http://blogs.msdn.com/shintak/archive/2008/11/18/9117603.aspx</link><pubDate>Tue, 18 Nov 2008 12:16:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9117603</guid><dc:creator>shintak</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/shintak/comments/9117603.aspx</comments><wfw:commentRss>http://blogs.msdn.com/shintak/commentrss.aspx?PostID=9117603</wfw:commentRss><description>&lt;p&gt;先日書いた、&lt;a href="http://blogs.msdn.com/shintak/archive/2008/11/05/9043635.aspx"&gt;Expression Blend SP1 での問題&lt;/a&gt;について、もうひとつの解決方法が見つかりました。&lt;/p&gt;  &lt;p&gt;Expression Design の クリップボードオプションにある、「XAML レイアウト コンテナにグループ化されたオブジェクトを配置」のチェックボックスをはずすというものです。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/shintak/WindowsLiveWriter/ExpressionBlendSP1_10103/image_2.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="191" alt="image" src="http://blogs.msdn.com/blogfiles/shintak/WindowsLiveWriter/ExpressionBlendSP1_10103/image_thumb.png" width="400" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;この場合は、Blendでペーストした際に、（Designのキャンバスと同じサイズの）Canvasオブジェクトが作られその中に配置されるのでしっかり表示が確認されます。&lt;/p&gt;  &lt;p&gt;ただし、コピペするオブジェクトよりも巨大なCanvasオブジェクトが作られるので、せっかくコピペで簡単操作をしているのに逆に面倒です。これはトレードオフですね。&lt;/p&gt;  &lt;p&gt;一応SP1のバグとしては認識されたみたいです♪&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9117603" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/shintak/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.msdn.com/shintak/archive/tags/Expression/default.aspx">Expression</category></item></channel></rss>