スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: スポンサー広告

無印とClient Profile

.NET Framework Client Profile
 .NET3.5~.NET4には、無印と「Client Profile」という二種類があった。Client Profileは、無印のサブセット(部分集合)的な存在で、頒布する際にインストールする.NETランタイムのサイズが小さくて済む(インストールに掛かる時間が短い)という利点があった。が、これがまた非常によくわからないエラーを生む時があった。

後輩:ちょっと良いっすか?
俺:ん?なに?
後輩:いつもの共通ライブラリを参照したっすけど、ビルドが通らないんっすよ。
俺:えー?
後輩:ほらね?参照もちゃんとしてるっす。でも、名前空間が存在しないって怒られるっす。
俺:あ。これもしかして、Client Profileにしてる?
後輩:ういっす。
俺:共通ライブラリのこれとこれは無印でビルドされてるから、Client Profileじゃつかえないよ?
後輩:まじっすか。
(ビルドを無印に変える)。
後輩:ほんとだ。ビルド通ったっす。

(注)実際は、こんなにチャラい訳では(ry。あと、彼は別に新人でもなく、それなりに経験と実績がある。
 そう、ClientProfile設定のプロジェクトからでも、無印設定のプロジェクト(ライブラリ)を参照できるくせに、ビルドになると見えないと怒られる。参照しているのに、見えていない。なんだかなーという感じになってしまう。
 まあ、上の記事を見ると、.NET4.5からは、Client Profileがなくなったらしい…。まあ、そういう訳のわからないエラーから解放されるんだから良い事ではあるんだけど、釈然としないなー。
スポンサーサイト
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: C# | コメント: 5 | トラックバック: 0

TextBoxのLostFocusイベントが肝心な時に発生しない。

 WPFで画面を開発していた時の話。
 マスタデータ等をメンテナンスするような画面では、画面終了時に、内容を変更していた時に限って終了を確認する為のメッセージを出す事がある。これは変更途中で間違って「x」ボタンを押してしまい、全部おじゃんにならなくて済むようにする為の保険になったりする。
 そんな感じで動く画面を作り、他の人にテストしてもらった時、NGがついてしまった。チェックした人が言うには、データを変更して画面を終了しようとしても、メッセージも出ずそのまま終了してしまうとの事だった。
 その画面では、TextBoxのTextプロパティとViewModel側のプロパティとは、下のような感じでデータバインディングしている。
<TextBox Text="{Binding InputText, UpdateSourceTrigger=LostFocus}"/>
TextBoxからフォーカスが外れた時点で、バインディングソースに変更通知が伝播するようにしていた。しかし、どうもLostFocusイベントが発生しないようだった。
しっかり再現もした。

(1)TextBoxにフォーカスしてカーソルが出ている状態にする。
(2)任意の文字を入力し、そのままマウスで右上の「x」ボタンを押す。
(3)そのまま終わってしまう。

WPFの仕様なのか、画面終了イベント(Closing)の後にLostFocusイベントが発生しているようだった。逆じゃねーかと半ギレしてみても、事態は何も変わらない。一番手っ取り早いのは、UpdateSourceTriggerをPropertyChangedに変更することだ。
<TextBox Text="{Binding InputText, UpdateSourceTrigger=PropertyChanged}"/>
うん。これで良い筈なんだけど…。これはこれでイベント通知が激しすぎるのが気になるんだ。何を入力しても即座に反応するので、更新通知頻度がとても高い。そのうえ、TextBoxからフォーカスが外れた時にのみチェックすれば良い事項があった時は、そもそもPropertyChangedにできない。結局、困った時のCommandさんに頼るのであった。続きを読む
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: WPF4 | コメント: 0 | トラックバック: 0

サイドバー背後固定表示サンプル

当ブログに書かれたソースコードは流用自由です。

バグ、スペルミス等はありうる事です。

ご利用の際は自己責任でお願いしますm(_ _)m

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。