在後面WPF應用程序的主窗口的文件代碼我有一個方法quering與LINQ一個數據庫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
});
}
當我從文件後面的同一代碼(同一個窗口)調用此方法,一切正常。
如果我從另一個調用窗口此方法,使用主窗口的instanse,保持的ObservableCollection空:
SWindow sw = new SWindow();
sw.GetStateByDate(stringpar);
,這是什麼原因呢?在這種情況下,方法是否創建另一個ObservableCollection實例?
(我可以在sw._ShAvaQuCollection
包含的值的調試器看到的。是sw._ShAvaQuCollection
不徵收相同instanse爲_ShAvaQuCollection
?如果是的話,它是如何解決的?)
編輯(添加)
該聲明的ObservableCollection這樣:
ObservableCollection<ShAvaQu> _ShAvaQuCollection =
new ObservableCollection<ShAvaQu>();
public ObservableCollection<ShAvaQu> 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事件處理程序我帶參數此數據庫quering:
private void ShSelList_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
SWindow sw = new SWindow();
string str = sw.ShQuCollection[ShSelList.SelectedIndex].ShCode;
sw.GetStateByDate(str);
Close();
}
}
請向我們展示(1)在從另一個窗口調用GetStateByDate時如何訪問ObervableCollection以及(2)_ShAvQuCollection的聲明。 – Heinzi 2010-01-10 17:17:03
謝謝。我已經添加了關於這個 – rem 2010-01-10 17:33:32