最近、コードのOneWayToSourceバインディングをビューモデルの読み取り専用プロパティに追加しました。当時、私は.Net 4の変更について知りませんでした。これにより、ゲッターがない場合に例外が発生します。
<Popup IsOpen="{Binding IsPopupOpen, Mode=OneWayToSource}" />
...
public bool IsPopupOpen
{
set
{
// do something with value
}
}
問題は、このコードが例外をスローせずに私のコンピューターで機能することです。まったく同じ実行可能ファイルは他のマシンでは機能しません。ポップアップは開かず、予期された例外がスローされます。これがどのように可能かわかりませんか?プロジェクトは.NetFW4を対象としています。
binフォルダーをクリアして再構築するようにしましたが、他のマシンではなく、自分のマシンでも例外なく機能しています。
これを「修正」する方法を知っています。プロパティにゲッターを追加するだけです。ただし、他の深刻な問題を引き起こす可能性があるため、プログラムが異なるマシンでどのように異なる機能を果たしているかを理解する必要があります...
編集:
これは私を怒らせています!Snoop WPFユーティリティを使用してポップアップを確認しましたが、IsOpenへのバインドがまったくないようです(バインドはXAMLに新しく追加されたものです)。ただし、デバッガーをアプリに接続し、バインドされたプロパティのセッター内にブレークポイントを設定すると、ブレークポイントに到達します!!