我有一个窗体绑定到ViewModel(MVVM)。在窗体内部,我有一个ItemsControl,它绑定到名为DataContext中的项目的元素。ItemsControl MVVM Binding
当我使用命令模式进行保存时,我保存该项目并执行检索,然后我想将ItemsControl重新绑定到Projects集合。这部分似乎没有工作,所有我的服务调用按预期工作,但即使从服务器返回,我的视图也不会反弹到添加项目的新集合。
任何与此有关的帮助将非常感激。
XAML
<ItemsControl Name="ProjectGrid"
Background="Transparent" ItemsSource="{Binding Path=Projects}" Margin="0,0,0,0" VerticalAlignment="Top"
ItemContainerStyle="{StaticResource alternatingWithTriggers}"
AlternationCount="2"
ItemTemplate="{StaticResource ItemTemplate}"/>
视图模型
public ICommand SaveCommand
{
get
{
if (_cmdSave == null)
{
_cmdSave = new RelayCommand(Save, CanSave);
}
return _cmdSave;
}
}
public void Save()
{
MyService.Save();
PopulateModel();
}
private void PopulateModel()
{
Projects = MyService.GetProjects();
}
public ProjectDto[] Projects
{
get { return _projects; }
set
{
if (_projects == value)
return;
_projects = value;
Notify(PropertyChanged, o => Projects);
}
}
什么Notify方法有用吗?如果你正在实现INotifyPropertyChanged更改通知,我认为WPF期望处理程序被称为像PropertyChanged(这,“项目”); – jeffora 2010-02-09 00:40:21
我会仔细检查,但我确信我正在这样做。 – Burt 2010-02-09 01:04:37
@jeffora:这就是'Notify(PropertyChanged,o => Projects)'的作用。许多人正在切换到接受lambda表达式的helper方法,以避免使用字符串文字。 – 2010-02-09 18:45:51