私はイベントを発生させるviewmodelに頼らざるを得ず、そのイベントをキャッチしてグリッド全体をリフレッシュしなければなりません。観察されないときに観察可能なもののポイントは何ですか?DataGridViewでObservableCollection <T>が表示されないのはなぜですか?
これは、メインフォームが最初のグリッドを埋める、起動、およびそれに何かをコレクションに追加されるたびに再増殖できるかです:
public ObservableCollection<FindMatchViewModel> FileInfos { get; set; }
:クラス
ViewModel
オン
private void MainForm_Load(object sender, EventArgs e)
{
FoundFilesBindingSource.DataSource = ViewModel;
// TODO Try get rid of event model.
ViewModel.FilesFound += (o, args) =>
{
if (FileInfosGrid.InvokeRequired)
{
FileInfosGrid.Invoke(new Action(() => FileInfosGrid.DataSource = ViewModel.FileInfos));
}
else
{
FileInfosGrid.DataSource = ViewModel.FileInfos;
}
};
}
、FileInfos
は次のように宣言されています
代わりにBindingListを使用してみましたか? – nozzleman
http://stackoverflow.com/questions/4284663/difference-between-observablecollection-and-bindinglistを参照してください。 – MSL
解決済み[ここ](https://stackoverflow.com/questions/33623991/connect-listt-to-a-リストフォーム):•Windowsフォームで、バインドされたリストコントロール(複雑な双方向データバインディング)のデータソースの変更を表示するシナリオでは、 'IBindingList'を' DataSource'として実装するクラスを使用する必要があります。最も適切な実装は 'System.ComponentModel.BindingList'です。 •一般的な間違いは、 'ObservableCollection'を使用しています。これは' IBindingList'を実装していないのでこの要件では機能しません。 –