2017-01-13 8 views
-1

私はリストとしてTextBlocksListBoxを持っている:コードビハインドのTextBlockからMouseDownイベントを処理するにはどうすればよいですか?

<ListBox Grid.Row="1" Margin="5"> 
<TextBlock Name="Address1" MouseDown="SongAddress"/> 
<TextBlock Name="Address2" MouseDown="SongAddress"/> 
<TextBlock Name="Address3" MouseDown="SongAddress"/> 
<TextBlock Name="Address4" MouseDown="SongAddress"/> 
</ListBox> 

は4 TextBlocksがあり、それらの一つ一つは、MouseDownイベントを持っています。私はそれらのそれぞれのために別のアクションをしたい、どのように私はcode-behindから処理することができますか?

答えて

0

この質問に対処するStackOverflowには数多くの質問があります。私はWPFのhow to write the code for an event handlerに精通していると仮定しています。

のような署名はになります:その後で

private void SongAddress(object sender, RoutedEventArgs eventArgs) 

- あなたが言及した場合には - あなたがイベントに対処する方法あなたまで。ボタンごとに別々のイベントハンドラを実装するか、またはと入力してそこから区別するプロパティを取得するようにsenderをキャストできます。

迷惑意見

類似Nameプロパティ値を含むと同じMouseDownイベントハンドラの値は、各TextBlockいくつかの概念的に類似の目的を共有しているという事実を暗示。実際に4つの別々のハンドルが必要かどうか、またはドメインのモデリングを改善して達成しようとしていることを処理できるかどうかを調べることができます。

-1

さまざまな方法で試しましたか?

<ListBox Grid.Row="1" Margin="5"> 
<TextBlock Name="Address1" MouseDown="SongAddress1"/> 
<TextBlock Name="Address2" MouseDown="SongAddress2"/> 
<TextBlock Name="Address3" MouseDown="SongAddress3"/> 
<TextBlock Name="Address4" MouseDown="SongAddress4"/> </ListBox> 

スイッチケースですか?

private void SongAddress(object sender, MouseButtonEventArgs e) 
{ 
    switch (((TextBlock) sender).Name) 
    { 
     case "Address1": 
      //dosomething 
      break; 
     case "Address2": 
      //dosomething 
      break; 
     case "Address3": 
      //dosomething 
      break; 
     case "Address4": 
      //dosomething 
      break; 
    } 
} 
+0

に名前を付ける必要があると思います。私が示したもう1つの方法は、あなたのコード内の送信者をTextblockにキャストし、それをスイッチケースで使用することです。 –

+0

私はこの解決に感謝してくれてありがとう。 – JGuerra

0

私はあなたがプレビュー
を使用して、あなたの問題を解決する方法は、その1 @PaparazziのTextBox

<TextBox x:Name="tb01" PreviewMouseDown="tb01_PreviewMouseDown"/> 

    private void tb01_PreviewMouseDown(object sender, MouseButtonEventArgs e) 
    { 
     if (sender is TextBox) 
     { 
      TextBox tb = (TextBox)sender; 
      string s = tb.Name; 
     } 
    } 
+0

ありがとう、良い解決策、本当に有用だった。 – JGuerra

+0

@JGuerraあなたは答えを受け入れることができます – Paparazzi

+0

私は受け入れるために評判の15ポイントが必要です:( – JGuerra

関連する問題