2010-12-03 12 views
3

フォームにデータグリッドとコンボボックスがあります。コンボボックスは、データグリッドのselectedItemにバインドされています。Silverlight DataGridのバインドの問題は、refreshまたはselectedIndex = -1を設定した後に発生します。

私は物事がうまくロードし、私は別の行を選択した場合コンボボックスがcorrecly更新されます。

しかし私はdatagrid.selectedIndex = -1(最初の行が選択されないように)、それがロード後に設定した場合の結合コンボボックスはもはや機能しません。これは問題だ。

私はまた、正確な事が発生した別のシナリオを持っています。データグリッドをフィルタリングすると、コンボボックスへのバインディングも機能しなくなります。

私は_codesは、コンボボックスに結合するが、データグリッド上でいくつかの操作後に失敗する理由を私は知らないのObservableCollection

   _ocvsCode = (CollectionViewSource)this.Resources["cvsCode"]; 
      _ocvsCode.Source = _codes;     
      dataGrid1.ItemsSource = _ocvsCode.View; 

ある場合、次のようにCollectionViewSourceにデータグリッドをバインドしています。

+0

注...グリッドのselectedItemにバインドされたテキストボックスもあります。それはうまく動作し続けます。奇数 – David

+0

さらに、コンボボックスの値を変更すると、将来のデータグリッド行の選択はコンボボックスに反映されません。これは、グリッドとコンボボックスとの間の結合が一時的なものに似ています。 – David

+0

関連するxamlを少し表示できますか? – AnthonyWJones

答えて

2

この場合の適切な解決策は、いくつかの変数にデータグリッドのSelectedItemを結合すること、及びその後も、その変数に他のコントロールを結合することです。 UIElementプロパティを他のUIElementプロパティに直接バインドすることは、一般に悪い習慣です。これにより、selecteditemプロパティをコンボボックスに強制する際に発生しているような問題のデバッグも可能になります。

0

私は、コンボボックスは、データグリッドののSelectedItemの値にバインドされているのと同じ問題が、渡ってきました。それが結合されたデータがnullになり、回復したことがない

ComboBoxコントロールブレーク。私はそれがなぜあるのか分からないが、バグであるように思える。 DataGridが列を並べ替えると、まずSelectedItemがnullに設定され、並べ替えが実行され、SelectedItemが元の値にリセットされます。 SelectedItemがnullになると、ComboBoxが壊れます。ここで

は私の仕事は周りです:

のDataContextのために使用されているクラスのSelectedItemプロパティを作成します。 セッターがヌルに設定されないようにするチェックを行います。 DataGridおよびComboBoxでこのプロパティにバインドします。

public YourItem SelectedItem 
{ 
    get { return _selectedItem; } 
    set 
    { 
     if (value == _selectedItem || value == null) 
      return; 

     _selectedItem = value; 
     RaisePropertyChanged("SelectedItem"); 
    } 
} 
関連する問題