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"
wirdIch kann dies mit einem horizontalen StackPanel und 3 Textboxen erreichen, aber gibt es eine viel einfachere Methode, die ich vermisse?
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%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.
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.
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.