none
Calendarで日付を選択させた後、Buttonが一度押しただけでは反応しない RRS feed

  • 質問

  • WPFのCalendarコントロールで、 SelectionMode="SingleRange"  として、マウスドラッグで連続した日付を選択させます。

    ここで、Calendarの外にButtonを配置して、押すと特定の処理をするようにしたいのです。

    理想としては、Calendar上でドラッグで日付選択→そのままButton上へマウスを移動させ、左クリック、で処理を開始させたいのです。

    が、上記の操作をすると、処理が開始されません。コードビハインドでClickイベントを拾う方法でも、Commandをバインドさせる方法でも変わりません。

    ただ、

    ・Buttonを2回連続で押す → 2度目に押したタイミングで処理は開始される

    ・ButtonとCalendar以外の適当な場所を一度クリックしてからButtonを押す → この場合なら最初にButtonを押した時に処理開始される

    と、なっています。

    どうもCalendar→Buttonと直接移動した時に、最初の1回だけが無視されてしまうようです。

    なんとか、本来想定している「Calendar上でドラッグで日付選択→そのままButton上へマウスを移動させ、左クリックで処理開始」させられないでしょうか?

    2013年5月8日 4:44

回答

  • DisplayModeが変化した後などで、以下の行を実行してみて下さい。

    Mouse.Capture(null);


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



    2013年5月8日 5:02
    モデレータ

すべての返信

  • DisplayModeが変化した後などで、以下の行を実行してみて下さい。

    Mouse.Capture(null);


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



    2013年5月8日 5:02
    モデレータ
  • 返信ありがとうございます。

    どうやらCalendarがマウスをキャプチャしてしまっていて、引数をnullにしたこの一文でその解放というのができるようですね。

    Calendarで、SelectedDatesChangedイベントの処理の最後にこれを入れたところ、無事に、直接Buttonを一度押しで反応するようになりました。

    ありがとうございました。


    • 編集済み April19th 2013年5月8日 5:51
    2013年5月8日 5:49