我有一个 ShellViewModel,BindableCollection
它在 ItemControl 的帮助下绑定到 Canvas。
我借助 ShellViewModel 的按钮将派生自 Screen 的 ChildViewModel 添加到此 bindableCollection。
我在 ChildViewModel 中有一个关闭按钮,单击此按钮时,我想从 ShellViewModel 的 BindableCollection 中删除项目,
请帮忙。
我有一个 ShellViewModel,BindableCollection
它在 ItemControl 的帮助下绑定到 Canvas。
我借助 ShellViewModel 的按钮将派生自 Screen 的 ChildViewModel 添加到此 bindableCollection。
我在 ChildViewModel 中有一个关闭按钮,单击此按钮时,我想从 ShellViewModel 的 BindableCollection 中删除项目,
请帮忙。
如果您想维护现有的实现,您始终可以创建一个事件并使用 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());
}
如果您需要在不同的视图模型之间进行交流,您应该使用信使。这是 mvvm light 工具包中的一个示例:http: //blog.galasoft.ch/archive/2009/09/27/mvvm-light-toolkit-messenger-v2-beta.aspx