0

BindableCollectionItemControlを使用してCanvasにバインドされたShellViewModelがあります。

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

異なるビューモデル間で話し合う必要がある場合は、メッセンジャーを使用する必要があります。これがmvvmlightツールキットの例です:http://blog.galasoft.ch/archive/2009/09/27/mvvm-light-toolkit-messenger-v2-beta.aspx

于 2012-05-11T14:40:08.273 に答える