Мне кажется, что я что-то здесь упускаю, но у меня есть эта таблица данных, которая, когда источник данных изменяется, автоматически перерисовывает его самостоятельно без логической причины для этого.
У меня есть сетка данных, связанная со свойством DataView, которое реализует INotifyPropertyChanged, и я хочу сделать некоторые другие вещи, когда это событие вызывается перед вызовом Refresh ().
Итак, вот источник данных.
public class MainScreenDataView : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
DataView _dataview;
public DataView GetDataView
{
get { return _dataview; }
set
{
_dataview = value;
OnPropertyChanged("GetDataView");
}
}
public MainScreenDataView()
{
}
}
И привязка (я называю это в конструкторе окна)
public void MakeData()
{
MiddleMan midman = MiddleMan.Instance;
midman.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(midman_PropertyChanged); //unrelated event for error messages
midman.InstantiateAll();
Binding bind = new Binding();
bind.Source = midman.GetDict["contact"].GetDataView; //GetDict is a dictionary that holds instances of MainScreenDataView
bind.UpdateSourceTrigger = UpdateSourceTrigger.Explicit;
DG_Contacts.SetBinding(BetterDataGrid.ItemsSourceProperty, bind);
}
Класс, который обновляет DataView с данными из базы данных, имеет доступ к тому же экземпляру MainScreenDataView, что и окно. Экземпляр хранится в словаре в единственном числе.
Теперь я не вижу причин, по которым сетка данных могла бы обновляться самостоятельно, я даже пытался удалить содержимое INotifyPropertyChanged из MainScreenDataview, но он сохраняет то же поведение.
Думаю, что-то здесь мне не хватает. Поведение по умолчанию где-то, что должно быть переопределено или что-то?