BindableCollection
ItemControlを使用してCanvasにバインドされたShellViewModelがあります。
ShellViewModelのボタンを使用して、Screenから派生したChildViewModelをこのbindableCollectionに追加します。
ChildViewModelに閉じるボタンがあり、このボタンをクリックすると、ShellViewModelのBindableCollectionからアイテムを削除したいのですが。
助けてください。
BindableCollection
ItemControlを使用してCanvasにバインドされたShellViewModelがあります。
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());
}
異なるビューモデル間で話し合う必要がある場合は、メッセンジャーを使用する必要があります。これがmvvmlightツールキットの例です:http://blog.galasoft.ch/archive/2009/09/27/mvvm-light-toolkit-messenger-v2-beta.aspx