ClippingBorder
こんにちは、ずっと書いてないので死んだと思われている siokoshou です。このところ WPF にがっつりと取り組んでいます。なので、WPF ネタをときどき書こうかなぁと。エッセンシャルWPF:Windows Presentation Foundation (Programmer's SELECTION) がとても役に立ってます。酷使しすぎて背表紙が壊れかけてたり。
さて、今日は Border の CornerRadius の話。Border では丸みを帯びた枠だけを書いて、背景は Border の子供が塗る場合、みごとにはみ出します!そういえば、ClipToBounds ってのがあったなぁと試してみてもクリップされません(^^;
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="10" SnapsToDevicePixels="true"> <DockPanel> <Grid DockPanel.Dock="Top" Background="{TemplateBinding Background}"> ...
そんなわけでぐぐってみると、MS の中の人が書いた解決コードがあったのでリンクしておきます。最後のほうの投稿にある、ClippingBorder クラスを使うときれいにクリップできました。
http://social.msdn.microsoft.com/forums/en-US/wpf/thread/3364bdd1-0e74-41cb-9cb9-d91f02443ceb/
ClipToBounds はレイアウトの動作らしい。まぎらわしい。