2009-12-03 7 views
8

Voglio rendere la bolla di testo visualizzata quando il mouse è su un TextBlock.Come posso far apparire una bolla informativa al passaggio del mouse sul mouseover in WPF?

Il codice è il più vicino possibile ma inserisce solo il testo in TextBox.Text stesso e cambia il colore. Voglio avere un es. Border/StackPanel/TextBlock sopra il blocco di testo originale mobile su un livello diverso durante il passaggio del mouse.

Come è possibile creare un pannello al passaggio del mouse simile a un'esperienza Web con lo 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."; 
     } 

    } 
} 

risposta

35

paio di modi si potesse fare, uno utilizzare un tool tip con uno stile personalizzato. alternativamente, è possibile utilizzare un controllo popup, una terza opzione sarebbe quella di utilizzare un decoratore.

Il mio istinto dice che vuoi un tooltip, tho.

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

è possibile utilizzare le proprietà ToolTipService collegabili per impostare una serie di opzioni per detto tooltip, da ritardi a posizioni tooltip