none
MVVMパターン で Me.Cursor = Cursors.Wait を行う方法 RRS feed

  • 質問

  • こんにちは。

    MVVMパターンを調べています。

    ViewModelの操作やViewModelとUI(XAML)とのマップなどについては、解ってきましたが、今度は、UIの操作を伴う処理を行おうとすると、一気にハードルが上がり、途方に暮れている状態です。

    Me.Cursor = Cursors.Wait

    こんな簡単な事を、どのようにすれば実現できるのか・・・
    インテリセンスを眺めただけですと、よくわかりませんでした。
    トリガーとストーリーボードで行うのかと思い、書こうとしましたが、そもそも、XAML編集で、CursorやCursoursなどはインテリセンスに表れる事もなく・・・
    まさか、カーソル形状変更ごときで、Messengerパターンを実装しないと駄目だとも思えず・・・
    ViewModelにカーソルを表すプロパティを用意して、XAMLから上手い事バインディングとかはできそうにないようでした。

    どうか、とっかかりとしてのヒントを教えてください。

    よろしくお願いします。

    2012年5月31日 9:05

回答

  • 以下のように実行するだけなので、ViewModel側だけで完結するような気がします。

    Mouse.OverrideCursor = Cursors.Wait

    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク Keiichi Oumi 2012年5月31日 11:54
    2012年5月31日 9:41
    モデレータ
  • Mouse.OverrideCursor を使ってアプリケーション全体のカーソルを上書きできます。

    私の場合、ViewModel から待機カーソルを出すのに、以下のようにしてます。

    Mouse.OverrideCursor = Cursors.Wait;

    解除するなら null (VB なら Nothing) を設定します。

    Mouse.OverrideCursor = null;


    ひらぽん http://d.hatena.ne.jp/hilapon/

    • 回答としてマーク Keiichi Oumi 2012年5月31日 11:54
    2012年5月31日 9:45
    モデレータ

すべての返信

  • 以下のように実行するだけなので、ViewModel側だけで完結するような気がします。

    Mouse.OverrideCursor = Cursors.Wait

    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク Keiichi Oumi 2012年5月31日 11:54
    2012年5月31日 9:41
    モデレータ
  • Mouse.OverrideCursor を使ってアプリケーション全体のカーソルを上書きできます。

    私の場合、ViewModel から待機カーソルを出すのに、以下のようにしてます。

    Mouse.OverrideCursor = Cursors.Wait;

    解除するなら null (VB なら Nothing) を設定します。

    Mouse.OverrideCursor = null;


    ひらぽん http://d.hatena.ne.jp/hilapon/

    • 回答としてマーク Keiichi Oumi 2012年5月31日 11:54
    2012年5月31日 9:45
    モデレータ
  • こんにちは。

    ええ~、ショックです orz

    MVVMとか関係ないじゃないですか・・・

    WinFormの様でもあり、まったく新しいWPFでもあり。
    行き詰まった時に「ここを見る!」っていう感?が働くまでにどれくらいかかるんだろう・・・

    イベントドリブンで考えるときと違って…なのかはわかりませんが、ひと通り、System.Windows.Input Namespaceを見ないとだめなのかなぁ。
    まだまだ、WinFormの習慣から抜けだせていないようです。

    trapemiyaさん、ひらぽんさんありがとうございました。

    2012年5月31日 11:54