2016-09-15 9 views
0

私は観察可能なコレクションでパフォーマンスの問題があります。 このforeachのは(MaAcquisitionが観察コレクションです)コンボボックスにバインドされ:このforeachの、すべてのループでwpfはパフォーマンスバインディングを向上させる巨大なobservablecollection

for (double i = 0.1; i <= 5; i += 0.1) 
{ 
    MaAcquisition.Add($"{i:0.0}"); 
    x++; 
} 

が、私はコンボボックスに値をバインドし、それは非常に遅いです。

だから、これを改善するために、私はこれを行う:

List<String> MaAcquisitionList = new List<String>(); 
for (double i = 0.1; i <= 5; i += 0.1) 
{ 
    MaAcquisitionList.Add($"{i:0.0}"); 
    x++; 
} 
MaAcquisition = MaAcquisitionList; 

それは作業が、私は「のSelectedItem」=>

SelectedMa = MaAcquisition[x - 1]; 

選択項目がバインドされ選択するバインディングん、この「foreachの」後です私のコンボボックスには、それが動作していない(選択された項目は空白です)。

public string SelectedMa 
     { 
      get { return _selectedMa; } 
      set 
      { 
       _selectedMa= value; 
       OnPropertyChanged(); 
       RaisePropertyChanged();  
     } 

あなたはこの問題のためにアイデアを持っていますか:

<ComboBox ItemsSource="{Binding MaAcquisition, Mode=TwoWay}" SelectedItem="{Binding SelectedMa, Mode=TwoWay}" IsEnabled="{Binding PreheatingDisable}"/> 

そして最後に、 "SelectedMa" のためのコードはありますか?

ありがとうございます。

+1

'SelectedMa'プロパティ/フィールドのコードを表示できますか? – slugster

+0

ここをクリックしてください: http://stackoverflow.com/questions/8606994/adding-a-range-of-values-to-an-observablecollection-効率的 –

+0

SelectedMaは変更を通知する必要があります。 INotifyPropertyChangedの例を参照してください。 – AnjumSKhan

答えて

2

あなたがObservableCollectionが遅いことについて:

あなたはObservableCollectionに項目を追加するたびに、イベントCollectionChangedは、この場合には(意見を知らせること発祥され、これはあなたのMaAcquisitionに結合したときに生成されるListCollectionViewです、つまりあなたのComboBoxにバインドされています)は、Itemsが変更されたObservableCollectionにバインドされています。 (hereについて)

要素のバッチを追加/置換するときにこのイベントが発生しないようにするには、たとえば、デフォルトのObservableCollectionクラスを拡張する必要があります。 Hereこれを行う方法について説明します。

あなたのSelectedMaについては、このプロパティを含むクラスに対してINotifyPropertyChangedを実装していて、正しく立ち上げていることを確認してください。

関連する問題