0

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

我借助 ShellViewModel 的按钮将派生自 Screen 的 ChildViewModel 添加到此 bindableCollection。

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

请帮忙。

4

2 回答 2

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());
    }
于 2012-05-11T16:10:15.800 回答
-1

如果您需要在不同的视图模型之间进行交流,您应该使用信使。这是 mvvm light 工具包中的一个示例:http: //blog.galasoft.ch/archive/2009/09/27/mvvm-light-toolkit-messenger-v2-beta.aspx

于 2012-05-11T14:40:08.273 回答