2009-07-12 3 views
0

いくつかのカスタム列を含むDataGridを持つSilverlightアプリケーションがあり、すべて正常に機能していました。その後、VS 2008 SP1用のSilverlight 3ツールに更新して再構築しました。今は以下の問題があります:DataGridで何が変更されたのですか?それはもう動作しません。

  1. コレクションが変更されたときに行が追加されません。 ItemsSourceプロパティはObservableCollectionインスタンスに設定されており、いつもその内容が変更されたときに通知します。これはSilverlight 2ではうまくいきました。しかし、Silverlight 3ではこれをすべて動作させるために、ItemsSourceをnullにしてから再設定する必要がありました。これはもっと大きな問題を隠しているようですが、かもしれない。

  2. 行またはセルをもう選択できません。私が運が良ければ、作業を止める前に1行全体を選択することができます。

  3. 私は何も編集できません。私はこれが前の点に関連していると思う。

私は可能なときに何らかのソースを投稿しますが、最初はそれを最小限に抑える必要があります。その間に、私は誰かがここで何が起こっているかもしれないかについて何らかの考えがあることを望んでいました。後の2つの点については、私のバインディングはもはや機能していないという感覚ですが、それは単なる推測であり、そうであれば、私はどのようなものか分かりません。

ありがとうございました。ありがとうございます。

更新
だから、私は最終的にシンプルな作品まで、私の問題を軽減/比較動作しません。私の要素タイプでEqualsをオーバーライドすると問題が発生しているようです。私がそれをやろうとすると、そのタイプを含むObservableCollectionに何か不思議なことが起きているように見え、私のアプリケーションは壊れてしまいます。より興味深いものにするために、重複した項目がコレクションに追加されることがないようにするチェックがあります。私は正確になぜObservableCollectionが項目を挿入する(スタックトレースはそれがIndexAtを使用していることを示している)の平等を比較する必要があるのか​​分からないが、これは問題を引き起こすようだ。

だから、どんな考えですか?

答えて

0

を私は最終的に私が記述した症状を引き起こした最初の問題を追跡しました。私はそれを認めて恥ずかしいですが、紛失したreturnキーワードの単純なエラーでした。私のEqualsは常に返されましたfalse SL3では、これはいくつかの問題を引き起こしました(SL2は気にしませんでした)。

だから、その問題は解決されます。参照型(または任意の型)のEqualsをオーバーライドすると、それが実際に動作することを確認してください。ユニットテストはこれを捕らえたでしょう。私には恥ずべき。

1

私のコードではまったく同じ問題がありました。私は、彼らが結合:( あなたのObservableCollectionを入力し、それが動作して変更を推測私は

ObservableCollection<MyType> typedObservableCollection = stuff; 
myDataGrid.ItemsSource = typedObservableCollection; 

をしていたとき、これはよくwortkingたではなく、私は

ObservableObjectCollection observableCollection = stuff; 
myDataGrid.ItemsSource = observableCollection; 

をしていたとき。

+0

ありがとうございますが、私のコレクションはすでに入力済みです。しかし、役に立つ情報のために+1。 –

+0

コードを投稿できますか?私のデータグリッドはまだSL3で正常に動作しています。 – R4cOON

+0

@ R4cOON:残念ながらコードを投稿できません。私はかなり私の問題は複雑なデータバインディングに関連するので、私はそれをリファクタリングするつもりだと確信しています。何がうまくいかないかの簡単な例が出たらすぐにこれを更新し、問題を特定できるかどうか確認します。これを見ていただきありがとうございます。本当にありがとうございます。 –

関連する問題