Вызов метода из другой проблемы окна (класса)
В коде позади файла главного окна приложения WPF у меня есть метод, запрашивающий базу данных с помощью LINQ to SQL и записывающий результаты в ObservableCollection:
public void GetStateByDate(string shcode)
{
MydbDataContext contextSts = new MydbDataContext();
_ShAvaQuCollection.Clear();
var sts = from p in contextSts.SAties where p.ShID == shcode select p;
foreach (var p in sts)
_ShAvaQuCollection.Add(new ShAvaQu
{
ShCode = p.ShID,
SiID = p.SiID,
PrCat = p.PrCat
});
}
Когда я вызываю этот метод из того же кода за файлом (в том же окне), все в порядке.
Если я вызываю этот метод из другого окна, используя экземпляр главного окна, ObservableCollection остается пустым .:
SWindow sw = new SWindow();
sw.GetStateByDate(stringpar);
Что является причиной этого? В этом случае метод создает еще один экземпляр ObservableCollection?
(Я вижу в отладчике, чтоsw._ShAvaQuCollection
содержит значения Являетсяsw._ShAvaQuCollection
не такой же инстинкт сбора, как_ShAvaQuCollection
? Если да, то как это можно решить?)
Отредактировано (добавлено)
ObservableCollection объявлен так:
ObservableCollection _ShAvaQuCollection =
new ObservableCollection();
public ObservableCollection ShAvaQuCollection
{ get { return _ShAvaQuCollection; } }
public class ShAvaQu
{
public string ShCode { get; set; }
public string SiID { get; set; }
public int PrCat { get; set; }
}
Я вызываю метод из окна, где другая коллекцияShQuCollection
отображается через ListView. В обработчике событий SelectionChanged я беру аргумент для запроса этой базы данных:
private void ShSelList_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
SWindow sw = new SWindow();
string str = sw.ShQuCollection[ShSelList.SelectedIndex].ShCode;
sw.GetStateByDate(str);
Close();
}
}