web-dev-qa-db-ja.com

コピー/切り取り/貼り付けをMVVMに実装するほうが良い場合はどこですか?

C#/WPFを使用し、MVVMパターンに従ってプロジェクトに取り組んでいます。このプロジェクトはタッチスクリーン用に設計されています。

プログラムの主な目的は次のとおりです。

Programsを含むChannelsがあり、Functionsを含みます。これらはすべてコピー/切り取り/貼り付けできるはずです。

コピー/切り取り/貼り付け機能を実装する必要があり、どこが最適か疑問に思います。

モデルにそのような機能があるのは奇妙に思えるので、私の考えはそれらをViewModelに実装することでした。

ただし、モデルには完全なビジネスロジックを含める必要があるため、ここにモデルを実装することは論理的ですが、疑問があります。

そのような実装のベストプラクティスは何ですか?前もって感謝します。

5
Maël Pedretti

クリップボードサービスを追加します

IClipboard
{
    void AddProgram(Program p);
    Program GetProgram(string id);
    ..... etc
}

これをViewModelに注入します。これにより、コピー/貼り付けのキーストロークなどにコピー/貼り付けコマンドがバインドされます。

ViewModel
{
    void OnCopy() {
        if(mouseIsOverAProgram) { this.clip.AddProgram(getProgramUnderMouse())
    }
}

あなたのモデルはプログラム、チャネル、関数などであり、この種のロジックについて知らないはずです。

5
Ewan