我有一个带有BindableCollection
的ShellViewModel,它在ItemControl的帮助下绑定到Canvas。
我在ShellViewModel的一个按钮的帮助下,将从Screen派生的ChildViewModel添加到此bindableCollection。
我在ChildViewModel中有一个关闭按钮,点击此按钮,我想从ShellViewModel的BindableCollection中删除项目,
请帮忙。
答案 0 :(得分:1)
如果您想维护现有的实现,可以随时创建一个事件并使用EventAggregator。您的ChildViewModel需要发布该事件,而ShellViewModel需要实现IHandle<ChildViewModelMessage>
接口。作为该实现的一部分,它将能够从BindableCollection中删除ChildViewModel。通常,它看起来像这样:
public class ChildViewModelMessage {
// Implementation here
}
public class ShellViewModel : IHandle<ChildViewModelMessage> {
...
public void Handle(ChildViewModelMessage message) {
// Handle here
}
}
public class ChildViewModel {
...
public IEventAggregator Events { get; set; }
protected void HandleClose() {
this.Events.Publish(new ChildViewModelMessage());
}
答案 1 :(得分:-1)
如果您需要在不同的视图模型之间进行交谈,则应使用信使。以下是mvvm light工具包中的一个示例:http://blog.galasoft.ch/archive/2009/09/27/mvvm-light-toolkit-messenger-v2-beta.aspx