ダブルクリックイベントを持っていないコントロールで判定を拾う

ソフトウェア開発担当のRyuです。
WPFで表題のことがしたいときの小技を紹介します。

GridやTextBlockなど、System.Windows.Controls.Control派生でないWPFコントロールはMouseDoubleClickイベントを持っていません。
TextBlockなら代わりにLabelを使うことも考えられますが、スタイルの異なるコントロールを使いたくないときなどもあったりします。
そんなときはContentControlを噛ませると、簡単にダブルクリックイベントを拾えます。


<ContentControl MouseDoubleClick="ContentControl_MouseDoubleClick">
    <TextBlock Text="ダブルクリック!" />
</ContentControl>

コマンドで済む時はBlendを使ってこんな感じに。


<ContentControl>
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="MouseDoubleClick">
            <i:InvokeCommandAction Command="{Binding DoubleClickCommand}" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
    
    <TextBlock Text="ダブルクリックコマンド!!" />
</ContentControl>

ContentControlは色々便利に使えるのがいいですね。