使用ChildViewModel从ShellViewModel的BindableCollection中删除项目?

时间:2012-05-11 14:15:46

标签: c# wpf mvvm caliburn.micro

我有一个带有BindableCollection的ShellViewModel,它在ItemControl的帮助下绑定到Canvas。

我在ShellViewModel的一个按钮的帮助下,将从Screen派生的ChildViewModel添加到此bindableCollection。

我在ChildViewModel中有一个关闭按钮,点击此按钮,我想从ShellViewModel的BindableCollection中删除项目,

请帮忙。

2 个答案:

答案 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