我正在使用wpf樹視圖並將ItemsSource綁定到具有IsChecked屬性的ViewModel的IEnumerable。我使用TwoWay模式將複選框綁定到此值。當我檢查複選框時,我可以看到當我單步執行程序時,它正在ViewModel上正確設置此值。WPF TreeView ItemsSource不保留值
然後我有一個菜單項「運行檢查」。在這個方法中,我有一個foreach循環,它通過ItemsSource運行,如同ViewModel的IEnumerable一樣,尋找IsChecked = true來排隊由獨立程序運行的檢查項。因此:
foreach (AccountViewModel account in tvClientList.ItemsSource as IEnumerable<AccountViewModel>)
{
if (account.IsChecked)
{
context.Queues.InsertOnSubmit(new Queue {Id = account.Id});
}
}
但是,account.IsChecked始終爲false。爲什麼是這樣?
1和2,都使用調試器進行檢查。我能想到的唯一的事情是,當我使用tvClientList.ItemSource時,它會重新查詢連接到的IEnumerable的Linq。 – light 2011-05-03 17:23:08