全体表示

[ リスト ]

BlendのTriggerを利用し、マウスイベントの座標をCommandに渡すカスタムTriggerActionをつくってみた。

XAML

Labelをクリックすると、Gridからの相対座標をCommandに渡します。

<Grid x:Name="LayoutRoot">
<Label Content="MouseCommandAction" Background="AliceBlue" Margin="100">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonDown">
<l:MouseCommandAction Command="{Binding TestCommand}"
RelativeTo="{Binding ElementName=LayoutRoot}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Label>
</Grid>

C#

カスタムTriggerActionの実装。
座標の基準となる要素を指定できるように、RelativeToプロパティを追加しています。

/// <summary>
/// マウス座標をCommandに渡すTriggerAction
/// </summary>
public class MouseCommandAction : TriggerAction<DependencyObject>
{
/// <summary>
/// Command
/// </summary>
public System.Windows.Input.ICommand Command
{
get { return (System.Windows.Input.ICommand)GetValue(CommandProperty); }
set { SetValue(CommandProperty, value); }
}

public static readonly DependencyProperty CommandProperty = DependencyProperty.Register(
"Command",
typeof(System.Windows.Input.ICommand),
typeof(MouseCommandAction),
new UIPropertyMetadata(null));

/// <summary>
/// 座標の基準となる要素
/// </summary>
public IInputElement RelativeTo
{
get { return (IInputElement)GetValue(RelativeToProperty); }
set { SetValue(RelativeToProperty, value); }
}

public static readonly DependencyProperty RelativeToProperty = DependencyProperty.Register(
"RelativeTo",
typeof(FrameworkElement),
typeof(MouseCommandAction),
new UIPropertyMetadata(null));

protected override void Invoke(object parameter)
{
// RalativeToが設定されていなければ、AssociatedObjectからの相対座標を取得
var element = this.RelativeTo ?? this.AssociatedObject as IInputElement;
var args = parameter as System.Windows.Input.MouseEventArgs;
if ((args != null) && (element != null) && (this.Command != null))
{
var point = args.GetPosition(element);
if (this.Command.CanExecute(point))
{
this.Command.Execute(point);
}
}
}
}

閉じる コメント(6)

顔アイコン

やべええええええええええええええwwwwwwwwwwww
俺もこんな事になるなんて思ってなかったわwwwwwwww
寝てるだけで稼げるとかマジどんだけだよ!!!!
ttp://love.doll-doll.net/m2nyy84/ 削除

2011/8/6(土) 午前 7:46 [ ついにきちゃいました… ] 返信する

顔アイコン

ttp://idol.haya.mobi/5d4z4gd/
俺のミニチ●コでも、ここなら余裕だったぜ!!
なんか知らんけど、カワイィ=とか言われて包 茎にめちゃ食いつかれたし(笑)
いっぱいペロペロしてもらって、7万ゲットっす!!v( ̄∀ ̄)v 削除

2011/8/13(土) 午後 5:20 [ ちょwww舐めすぎwww ] 返信する

顔アイコン

見つけてきました?(笑)
なでなで しこしこ JAPAN
ttp://e.nadesiko2.org/04ekm0f/ 削除

2011/9/11(日) 午前 8:52 [ びっくりネタ ] 返信する

顔アイコン

アニメにしか興味なかった俺が廃人寸前から
現実に復帰できたキッカケ
ttp://w.h-anime.me/fhw--gq/ 削除

2011/9/18(日) 午後 7:24 [ アニメにしか興味なかった俺が ] 返信する

顔アイコン

初心者です><
iphone4のauとsoftbankは、どっちがいいんですか!?
ttp://ip.au-vs-softbank.com/6cnymjp/ 削除

2011/10/16(日) 午後 4:29 [ すいません>< ] 返信する

顔アイコン

68617zcX
マジかよこれぇwww
宝くじよりよっぽど儲かんじゃねwwwww
俺超勝ち組wwwwww
ttp://27Z5n6eu.win.3f3xp.com/27Z5n6eu/ 削除

2012/1/5(木) 午後 0:46 [ うっはぁぁぁぁん!! ] 返信する

コメント投稿

顔アイコン

顔アイコン・表示画像の選択

名前パスワードブログ
絵文字
×
  • オリジナル
  • SoftBank1
  • SoftBank2
  • SoftBank3
  • SoftBank4
  • docomo1
  • docomo2
  • au1
  • au2
  • au3
  • au4
投稿

.


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事