18

マウスがTextBlockの上にあるときにテキストの吹き出しを表示したい。

次のコードは私が得ることができる最も近いものですが、テキストを TextBox.Text 自体に挿入し、色を変更するだけです。マウスオーバー中に別のレイヤーに浮かぶ元のテキストブロックの上に、たとえば Border/StackPanel/TextBlock を配置したいと考えています。

頭字語タグを使用して、Web エクスペリエンスに似たホバー パネルを作成するにはどうすればよいですか?

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.";
        }

    }
}
4

2 に答える 2

58

いくつかの方法がありますが、カスタム スタイルのツール ヒントを使用する方法があります。別の方法として、ポップアップ コントロールを使用することもできます。3 番目のオプションは、装飾を使用することです。

私の直感では、ツールチップが必要だと言っています。

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

その後、ToolTipServiceの添付可能なプロパティを使用して、遅延からツールチップの位置まで、ツールチップのさまざまなオプションを設定できます。

于 2009-12-03T18:18:20.380 に答える
5

ツールチップ プロパティ

于 2009-12-03T18:16:40.163 に答える