【发布时间】:2014-03-08 21:37:36
【问题描述】:
我有一个容器,例如列表框、组合框等,它的 ItemsSource 属性绑定到我的视图模型中的可观察集合。 当我尝试通过 VM 中的某种方法从集合中添加/删除项目时,它不会反映在 UI 中, UI 真正刷新的唯一方法是,如果我为集合分配一个新值(即具有相关数据的另一个集合),这会迫使他重新绑定整个集合。
也许我错过了/不了解有关集合绑定问题的某些内容,无论哪种方式,如果有人有解决方案/很好的解释/两者都会很棒。 这是我的视图中的一个示例(在这种情况下它是一个列表框)
<ListBox
Grid.Row="9"
Grid.Column="1"
Grid.ColumnSpan="3"
Width="200"
Height="200"
ItemsSource="{Binding PreSavedRecordingScheduleList,UpdateSourceTrigger=PropertyChanged}"
SelectedItem="{Binding SelectedPreSavedRecordingSchedule,UpdateSourceTrigger=PropertyChanged}"
DisplayMemberPath="Display"/>
这是我的 ViewModel:
private ObservableCollection<ScheduledRecordingObject> m_PreSavedRecordingScheduleList;
PreSavedRecordingScheduleList = new ObservableCollection<ScheduledRecordingObject>();
public ObservableCollection<ScheduledRecordingObject> PreSavedRecordingScheduleList
{
get
{
return m_PreSavedRecordingScheduleList;
}
set
{
m_PreSavedRecordingScheduleList = value;
OnPropertyChanged("PreSavedRecordingScheduleList");
}
}
ScheduledRecordingObject 也实现了 INotifyPropertyChanged。
【问题讨论】:
-
显示你到目前为止的代码尝试
-
只是为了更好地理解 - 您的集合中的初始值显示在您的列表框中?
-
是的,显示初始值。例如,我可以在 C'tor 中添加一些项目,它们将对用户可见,但我之后所做的任何更改(添加/删除/清除等)都不会刷新 UI
-
请发布您设置数据上下文的代码,并在运行时检查数据上下文并与 snoop 绑定。
标签: wpf mvvm binding observablecollection itemssource