locked
ToolTipp für Silverlight 1 / Textblockformatierung RRS feed

  • Frage

  • Hallo zusammen,

    ich habe einen Code für einen ToolTipp für Silverlight1.
    Die Problematik hierbei ist, dass die Breite des Textfeldes über die Anzahl der Buchstaben ermittelt wird:
    var stri_lang = str_lang(mytext);
    
    
    
    if (stri_lang > "") {
    
    	var stri = stri_lang * 8;
    
    	}
    
    
    
    
    Hier der Code für das XAML Fragment:
    var xamlFragment = '<Canvas Width="'+stri+'" Height="18" Background="#FFFFE1" Canvas.Left="'+leftPos+'" Canvas.Top="'+topPos+'">';
    
          xamlFragment +=   '<Rectangle Width="'+stri+'" Height="18" Stroke="Black" />';
    
          xamlFragment +=   '<TextBlock FontSize="12" Text="'+ mytext + '" Canvas.Left="5" Canvas.Top="0" />';
    
          xamlFragment += '</Canvas>';
    
    
    
    

    Dies hat zur Folge, dass das Rechteck nicht immer an den Text angepasst ist (also entweder zu klein oder groß).

    Gibt es einen Befehl, mit dem die Hintergrundfarbe des Textblockes angegeben werden kann?
    Background funktioniert auf jeden Fall nicht.

    Die Idee die mir hier vorschwebt wäre:
    Den Text mir der Farbe hinterlegen und dem Text ein Leerzeichen voran- und hinten anzufügen.

    Gruß
    Obelix
    Samstag, 29. August 2009 10:50

Antworten

  • Warum nimmst du nicht SL3 mit dem ToolTipService?

    Dein xamlFragment könnte so aussehen:


        var xamlFragment = '<Canvas Canvas.Left="'+leftPos+'" Canvas.Top="'+topPos+'">';
        xamlFragment += <Border BorderBrush="Black" BorderThickness="2" Background="#FFFFE1">';
        xamlFragment += <TextBlock FontSize="12" Text="'+ mytext + '" Canvas.Left="5" Canvas.Top="0" />';
        xamlFragment += </Border>';
        xamlFragment += </Canvas>';

     


    --
    Peter

    Samstag, 29. August 2009 20:15
  • Mit Lehrzeichen meinte ich natürlich Leerzeichen :-)

    --
    Peter
    Sonntag, 30. August 2009 09:45

Alle Antworten

  • Warum nimmst du nicht SL3 mit dem ToolTipService?

    Dein xamlFragment könnte so aussehen:


        var xamlFragment = '<Canvas Canvas.Left="'+leftPos+'" Canvas.Top="'+topPos+'">';
        xamlFragment += <Border BorderBrush="Black" BorderThickness="2" Background="#FFFFE1">';
        xamlFragment += <TextBlock FontSize="12" Text="'+ mytext + '" Canvas.Left="5" Canvas.Top="0" />';
        xamlFragment += </Border>';
        xamlFragment += </Canvas>';

     


    --
    Peter

    Samstag, 29. August 2009 20:15
  • Hallo Peter,

    eine einfache Antwort: weil ich es nicht weiß ;o)

    Also ehrlich, das ist eine echt klasse Lösung, Danke.
    Und damit der Text nicht so gepresst in dem Feld steht, habe ich am Anfang und am Ende noch ein Leerzeichen eingefügt:
    var plzh = " ";
    
    Text="'+ plzh +  mytext + plzh +'"
    
    Somit kann der eigentliche Text ohne Berücksichtigung für weitere Verwendungen so eingefügt werden wie er benötigt wird.

    Andere Frage, was meinst Du mit SL3 (Silverlight 3)?


    Samstag, 29. August 2009 22:34
  • Anstelle der Lehrzeichen sollte besser Padding oder Margin genutzt werden.

    SL3 - Silverlight 3. Da gibt es die Möglichkeiten mit ToolTipService.

    --

    Peter
    Sonntag, 30. August 2009 05:48
  • Anstelle der Lehrzeichen sollte besser Padding oder Margin genutzt werden.

    Das werd ich gleich mal ausprobieren. THX
    SL3 - Silverlight 3. Da gibt es die Möglichkeiten mit ToolTipService.

    Das Problem ist, ich habe Expression Studio 2 und da steht nur SL1 als Projekttyp zur Verfügung. Auch ist das gesamte Projekt in Silverlight 1 erstellt. Den Umbau auf Silverlight 2 habe ich noch vor mir und mir graut etwas davor ;).
    Grüße von der Schwäbischem Alb Stefan
    Sonntag, 30. August 2009 07:30
  • Mit Lehrzeichen meinte ich natürlich Leerzeichen :-)

    --
    Peter
    Sonntag, 30. August 2009 09:45