2009年9月30日水曜日

Express Editionでのnunit test

ここの情報がすごく参考になりました。
NUnitのコードをデバッグ実行する方法。

http://dora.bk.tsukuba.ac.jp/~takeuchi/index.php?%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%2F%A3%C3%A1%F4%2FExpress%20Edition%20%A4%C7%A4%CE%A5%C6%A5%B9%A5%C8%B6%EE%C6%B0%B7%BF%B3%AB%C8%AF

TestDrivenってなんで動かないんだろうと思ったら
普通にインストールした場合、Express Editionじゃ無理なんですね。。

ちなみに、上記の通りやろうとして、nunit.addinを探してしまった。
nunitのとこじゃなくて、TestDrivenの方に入っていました。

delegateをいっぱい書くのがめんどくさいと思ってたら

Action<>とかFunc<>とかあるんですね。
他人のサンプルでAction<>を見て、これなに??と思ったけど、
delegateの型定義して、そのインスタンスを作成して、
というめんどくさかった作業がこれらで不要になるようですね。
戻り値なしがAction<>で戻り値ありがFunc<>みたいです。
サンプルは探せばすぐあるので省略。
これとかLINQとか使うとすごく楽になりますね-。
なれるまで読むのが大変だけど。。

2009年9月29日火曜日

ObservableCollectionにはAddRangeがない

たくさんのアイテムを一度に追加したいときに、
普通にAddすると1個ごとに通知が行きそうだけど
AddRangeがないのでどうしたらいいのかな?
自分で通知を止める仕組みを入れる必要があるのかな?
と思っていたら、以下の記事を見つけた。

http://blogs.microsoft.co.il/blogs/tamir/archive/2008/05/13/how-to-addrange-removerange-in-silverlight-observablecollection-lt-t-gt.aspx

書かれているソースコードは自分がやろうと思っていたこととほぼ同じなんだけど、
簡単に書くと、少ないうちは効果あるけど、数が多くなると逆に遅くなるよってことらしい。

遅くなる原因がこの説明だけだといまいち理解できなかったけど、
とりあえず、今はパフォーマンスで困ってないので、普通にAddで行くことにします。

P.S.
Resetのあたりを工夫するとどうにかできないかなーと思ったけど、
それはまた時間ができたときに。

2009年9月28日月曜日

フォーカス時の点線をなくす

WPFのアイテムで、フォーカスを取得したときに点線で囲まれるときがあるんですけど、
ビジュアル的にこれをやめたくて、
ここで紹介されているやり方で解決しました。
FocusVisualStyle="{x:Null}"でいいようです。

2009年9月27日日曜日

XMLのシリアライズでちょっとハマッタ

ここを参考にさせてもらってファイルにXML形式で保存しようとしたら、
"保護レベルの設定が原因で '(クラス名)' にアクセスできません。パブリックの型のみ処理できます。"
という例外が出た。
フィールドとプロパティを全部publicに直したり
[XmlIgnoreAttribute]
を付けたりしたのに解決しない!!

と思ったら、Classがpublicになっていないというオチでした。

2009年9月26日土曜日

ウィンドウの半透明化

ここを参考にさせてもらいながら半透明にしようとしてたけど、うまくいかなかった。
Backgroundの指定は普通にして、
Opacity="0.2"
の指定をするとうまく半透明にできた。
例のまま作らずに、いきなり自分のアプリに適用させようとしてたから
どこか抜けていたのかもしれないけど。

ついでに、
Background="Transparent"
と完璧な透過にしたら、透過の部分がクリックできないもんだいも
この方法で解決した。