画像つき背景とか

ちょっと凝った背景*1をコントロールの背景に設定し
たい時、Templateを使えば上手くいくかと思ったら中々行かなかった。

仕方ないので何もしないGridのみのUserControlを使って代用。
これで背景などのスタイルも一元管理できるけど、
いささか大掛かりすぎる気がする。

その内もっと良い手が見つかるかもしれないが、とりあえずこれで。

*1:画像背景+透過PNGなど

WPFでのUIアンチエイリアス封じ込め

WPFでのアンチエイリアス封じ込めのために。
Root要素で以下の指定をしておけば大体全部?アンチエイリアスを無効にできる。

RenderOptions.BitmapScalingMode="NearestNeighbor"
RenderOptions.EdgeMode="Aliased"

http://blogs.msdn.com/b/hiroyuk/archive/2009/02/16/9425120.aspx
参考。

UseLayoutRoundingプロパティやSnapsToDevicePixelsプロパティも試してみた
が、今ひとつ動作に信用が置けなかったので、他の方法を探していた所発見した
次第。
マップエディタとか、2Dピクセル系のものを作る時に、
アンチエイリアスは邪魔なだけなので、この方が確実。

勝手に動かないで

WPFのデザインモードかどうかをチェックする方法。
デザインモードではカレントディレクトリなど、色々実行時と異なる要素がある
ので、それで例外投げて落ちられると、デザイナが機能しなくなる。

DesignerProperties.GetIsInDesignMode(this)
//thisはUIエレメント。返り値はbool値。

デザインモードの場合は、サンプル的なデータを食わせて、
キレイに初期化しておくのが吉。

しかし例外投げたら、最低限のUIレイアウトだけ表示するとか、
もう少し気の利いた造りには出来なかったんですかね。。。
デザイナに振り回されるコードを書くのは正直気が進みませんなあ。