2010-12-15 7 views
0

Ich habe das WPF-Etikett mit content = "Label_Label" definiert. Während der Anzeige wird "LabelLabel" angezeigt. Die erste "_" ist berücksichtigt für "Alt Key" Referenz. In meiner realen Anforderung bin ich Inhalt Label dynamisch zuweisen, also bitte Lösung für dieses Problem angeben.WPF-Etiketteninhalt: Wie vermeidet man den Verweis auf Alt-Taste?

<Label Content="Label_Label" Height="28" HorizontalAlignment="Left" Margin="73,42,0,0" Name="label1" VerticalAlignment="Top" Width="88" UseLayoutRounding="False" ClipToBounds="False" />

+0

Meinst du, dass die Beschriftung "Label_Label" anzeigen soll, anstatt "_L" als Zugriffsschlüssel zu erkennen? –

+0

@Matt: Ich möchte meinen Inhalt so anzeigen, wie er ist. Wenn es "Label_Label" ist, möchte ich "Label_Label". Ich möchte dasselbe sehen, was ich tippe. Ich kann den doppelten Unterstrich "__" nicht benutzen, um das Problem zu lösen, da ich den dynamischen Inhalt bekomme und kein Recht habe, ihn zu ändern. – vrbilgi

+0

Ok in diesem Fall sollte meine Antwort zu Ihnen passen. –

Antwort

4

Wenn Sie den Inhalt Ihres Labels an einige Daten binden und den Unterstrich in den Daten nicht" entwischen "können (nach der Antwort von mwtb), besteht die andere Möglichkeit darin, den Text in einen TextBlock einzufügen das Etikett. TextBlocks haben kein Konzept eines Zugriffsschlüssels, so dass sie den Text so anzeigen, wie er ist.

Anstatt also diese:

<Label Content="{Binding MyText}" /> 

Sie können dies tun:

<Label><TextBlock Text="{Binding MyText}" /></Label> 

Unter der Annahme, "MyText" enthält die Zeichenfolge "hello_world", wird der ehemalige Hello World anzeigen, während die letzteren hello_world angezeigt .

aktualisieren

Per Ihren Kommentar, hier ist die gleiche Sache in Code:

var tb = new TextBlock(); 
tb.SetBinding(TextBlock.TextProperty, new Binding("MyText")); 
var label = new Label 
{ 
    Content = tb 
}; 

Das sollte nicht getestet ist aber funktionieren. Natürlich müssten Sie dann in gewohnter Weise "Etikett" zu Ihrem visuellen Baum hinzufügen.

+0

Ihr Fix löst meine Probleme genau nach Bedarf. Kann ich Sie um weitere Hilfe bitten? Samt Ich möchte mit folgenden Art von Code zu tun. Label myLabel = neues Label() ..... TextBlock myTextBlock = neuer TextBlock() ...... – vrbilgi

+0

Ich akzeptiere Ihre Lösung Wie es für meine Anforderung funktioniert. Wenn Sie eine Chance bekommen, schauen Sie bitte in meinen obigen Kommentar. – vrbilgi

2

Sie können den Unterstrich entkommen, indem zwei in einer Reihe mit:

Content="Label__Label" 

Ich bin mir nicht sicher, welche zusätzliche Fragen Sie impliziert durch „In meinem wirklichen Bedarf bin ich zufrieden zuweisen um dynamisch zu beschriften "

+0

Ich kann den doppelten Unterstrich "__" nicht benutzen, um das Problem zu lösen, da ich den dynamischen Inhalt bekomme und kein Recht habe, ihn zu ändern. – vrbilgi

+0

Die andere Antwort sollte Ihnen dann passen. – mwtb

0

Ehrlich gesagt, der einzige Unterschied zwischen einem Label und einem ContentControl ist, dass ein Label ermöglicht die Verwendung eines Zugriffsschlüssels. Wenn Sie die Zugriffsschlüsselfunktion nicht benötigen, verwenden Sie einfach ContentControl.

Verwandte Themen