2012-02-17 20 views
0

私は実際に問題があるかどうかはわかりませんが、私の中では皮肉なことに、私が根本的に間違っていることをやっていると思います。バインドされたObservableCollectionインスタンスを変更する

public SeatingPlanItemCollection DisplayItems 
    { 
     get 
     { 
      return _displayItems; 
     } 
     private set 
     { 
      SetField(ref _displayItems, value,() => DisplayItems); 
     } 
    } 

これは、その後、ItemControlのItemSourceプロパティにXAMLを介して結合されています

私は、サブモデルののObservableCollectionを表示するプロパティを持つビューモデルを持っています。特定のコマンドから、このコレクションをモデル内で変更することができます。コードを実行するとすべてがうまくいき、コレクションが変更され、ItemsControlsが完全かつ迅速にリフレッシュされます。しかし、私は時々変更をデバッグするのが非常に遅く、束縛エラーが出力ウィンドウに表示されることに気付きました。これは、プロパティが変更される前の任意の時点でコードに壊れた場合にのみ発生します。私がデバッグモードになっていても、いつでも壊れていなければ、すべてが問題なく、バインディングエラーは報告されません。

コントロールをコレクション内のアイテムにバインドし、コレクションを変更してバインディングを破棄すると、コレクションはコレクションの変更イベントを発生させ、ビューは正常に再バインドされます。私が知りたいのですがどのような

は次のとおりです。私は、コードに分割した後

  1. はなぜバインドエラー出力のみを行いますか?
  2. これは心配するものですか?遅くなるのは、明らかに本番環境では発生しないコードに侵入した後に明らかになっているように見えるからです。 (私が気付いていないシーンの後ろにはまだ軽微なパフォーマンスのヒットがあるかもしれないと思うが、私が気づく主要なものは出力ウィンドウにエラーを出すランタイム環境である)。
  3. 問題がある場合は、ItemsControlがバインドされているコレクションの変更をどのように処理する必要がありますか?

十分に明確です。

ありがとうございます。

ポール

EDIT私はそれは私が代わりに専用のコレクション・インスタンスに決めたので、コレクションのインスタンスは、おそらく問題だっ変更考え出し、それを変更することが必要なとき、私はクリア1点で

新しいアイテムをすべて追加した場合、同じ問題が発生しました。

答えて

1

出力ウィンドウにバインディングエラーを出力すると、何らかの理由でWPFが大幅に低下することがわかりました。私はそれをオフにする必要があればそれをオフにします。

+0

私は元気だと思っていますが、私の元々の考えはあまり心配していませんでしたが、その考え方は時々私を困らせるので、私は調査すると思っていました。私はデータバインディングトレースを冗長からエラーにしました(私はそれを昨日冗長にしていたことを忘れていました)。あなたのご意見ありがとうございます。 –

関連する問題