2009-12-03 10 views
8

マウスがTextBlockを超えると、テキストのバブルが表示されます。WPFのマウスオーバー時にホバー情報の吹き出しが表示されるようにするにはどうすればよいですか?

次のコードは私が得ることができる最も近いものですが、TextBox.Text自体にテキストを注入して色を変更します。私は、 Border/StackPanel/TextBlockは、元のテキストブロックの上に表示されます。は、マウスオーバー時に別のレイヤーに浮かぶです。

acronym tagのウェブエクスペリエンスに類似したホバーパネルを作成するにはどうすればよいですか?

using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Input; 
using System.Windows.Media; 

namespace TestHover29282 
{ 
    public partial class Window1 : Window 
    { 
     public Window1() 
     { 
      InitializeComponent(); 

      TextBlock tb = new TextBlock(); 
      tb.Text = "test"; 

      tb.MouseEnter += new MouseEventHandler(tb_MouseEnter); 
      tb.MouseLeave += new MouseEventHandler(tb_MouseLeave); 

      MainStackPanel.Children.Add(tb); 
     } 

     void tb_MouseLeave(object sender, MouseEventArgs e) 
     { 
      TextBlock tb = sender as TextBlock; 
      tb.Background = new SolidColorBrush(Colors.Transparent); 
      tb.Text = "test"; 
     } 

     void tb_MouseEnter(object sender, MouseEventArgs e) 
     { 
      TextBlock tb = sender as TextBlock; 
      tb.Background = new SolidColorBrush(Colors.Orange); 
      tb.Text += " - this should be in a popup bubble."; 
     } 

    } 
} 

答えて

35

あなたがそれを行うことができますいくつかの方法、一つはカスタムスタイルでツールチップを使用します。 代わりに、ポップアップコントロールを使用することもできます.3番目の方法は、adornerを使用することです。

私の腸はあなたがほしいと言っていますtooltip、tho。あなたは遅れからツールチップの位置に、言ったツールチップのためのさまざまなオプションを設定する

ToolTipService取り付け可能なプロパティを使用することができます

<TextBlock ToolTip="stuff, could even be a custom control, etc" Text="my text" /> 

関連する問題