Мне нужно изменить определенное свойство DataGridView (DataSourceUpdateMode для одной из его привязок), только когда ВСЕ его начальные привязки данных завершены.
Я попытался подписаться на событие «DataBindingComplete», но оно сработалослишком много раз (один или несколько раз для каждой привязки, связанной с контролем);мне нужно более глобальное событие «AllDataBindingsComplete», которое запускается, когда элемент управления готов для отображения пользователю.
В качестве временного обходного пути я использую событие MouseDown (я предположил, что когдапользователь может щелкнуть элемент управления, это означает, что элемент управления отображается ... :) и события, с которыми я играю - SelectionChanged - запускаются после MouseDown):
protected override void OnMouseDown(MouseEventArgs e)
{
Binding selectedItemsBinding = this.DataBindings["SelectedItems"];
if (selectedItemsBinding != null)
{
selectedItemsBinding.DataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged;
}
base.OnMouseDown(e);
}
Это работает, но пахнет как уродливый хак много (и он вызывается слишком много раз, только одного раза достаточно для моих нужд).
Есть ли лучший способ?
(да, япытаюсь применить MVVM в проекте Windows Forms, и я добавил привязываемое свойство SelectedItems к DataGridView ...)