WPF Gebundener und fixierter Text in einer TextBox

7

Ich habe den folgenden Code, um das Alter eines Kunden anzuzeigen.

%Vor%

Aber anstatt nur die Nummer anzuzeigen, möchte ich sie mit dem Text "Age" voranstellen und sie mit dem Text "yrs" versehen, so dass sie effektiv "Age 36 yrs"

wird

Ich kann dies mit einem horizontalen StackPanel und 3 Textboxen erreichen, aber gibt es eine viel einfachere Methode, die ich vermisse?

    
Mitch 15.09.2009, 21:46
quelle

4 Antworten

8

Angenommen, Sie benötigen den Alterswert nicht, um bearbeitbar zu sein. In WPF 4.0 ist die Text-Eigenschaft von Run bindbar. Dies hilft Ihnen wahrscheinlich momentan nicht, es sei denn, Sie verwenden die Vorabversion, aber Sie werden in der Lage sein etwas wie das Folgende zu tun:

%Vor%

UPDATE Hier ist eine andere Alternative zur Format-String-Lösung, die funktioniert, aber nicht besonders hübsch ist (in der Tat ist es ziemlich hacky). Verwenden Sie den folgenden Konverter für die Bindung (angenommen ClientAge-Eigenschaft ist vom Typ Int):

%Vor%     
Simon Fox 15.09.2009, 22:43
quelle
5

Sie können auch in der Klasse, die Sie binden, eine Eigenschaft erstellen, die die Textzeichenfolge erstellt, die Sie anzeigen möchten.

Es gibt auch die StringFormat-Route:

%Vor%

Sie können Konstanten in die Formatierungszeichenfolge hacken.

Ich bevorzuge die Eigenschaftsmethode.

    
Jay 15.09.2009 21:55
quelle
5

Das ist eine ziemlich alte Frage, aber ich denke, das ist die beste Lösung (wenn Sie den Text bearbeiten wollen).

Sie können es mit einem InlineUIContainer in einem TextBlock mit einem verschachtelten Textbox machen.

Hinweis: Ich habe BaselineAlignment="Center" verwendet, um die Komponenten auszurichten. Sie können dem TextBox bei Bedarf auch positive oder negative Ränder hinzufügen. Außerdem habe ich den Rand von TextBox so transparent gesetzt, dass er wie ein Teil von TextBlock aussieht, obwohl er editierbar und auswählbar ist.

%Vor%     
Simon_Weaver 06.10.2011 04:56
quelle
1

Das ist wie eine vorherige Antwort - (aber sie sind alle mit Texblocks ... also hier eine Textbox-Version), ich wollte auch den Multibinding-Ansatz zeigen. Um eine Texbox dazu zu bringen, das zu tun, was Sie wollen, können Sie den folgenden Code verwenden:

%Vor%

Es kann nützlich sein, wenn Sie Ihren Text auswählbar machen wollen, damit ein Benutzer den Code kopieren kann.

    
Hoarst 08.10.2015 11:42
quelle

Tags und Links