我有一個窗體綁定到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