2016-04-12 10 views
1

Ich möchte einen Wert in einem TextBox in Silverlight anzeigen, aber ich muss einen Einheitswert festlegen, der konstant bleibt.Silberlicht: So stellen Sie die Einheit als Konstante in einem Textfeld ein

Beispiel:

100 gpm

Ich brauche den Wert (100) zu ändern, aber die Einheit (gpm) sollte immer statisch bleiben.

Hier ist meine aktuelle Bindung.

<TextBox Text="{Binding Path=Current.SystemDemand,Mode=TwoWay}" /> 
+0

Sind Sie den Wert direkt – Nkosi

+0

von Code Bindung mit Bindung oder Einstellung hinter .. Text = "{Binding Path = Current.SystemDemand, Mode = TwoWay}" – AhammadaliPK

+0

wir GotFocus und Lost-Focus-Events – AhammadaliPK

Antwort

1

Wenn Sie auf das TextBox Binding verwenden Sie das Format der Bindung einstellen.

Hier ist, wie Sie das Format in XAML festlegen

<TextBox x:Name="myTextBox" Text="{Binding Path=Current.SystemDemand, Mode=TwoWay, StringFormat='\{0} gpm'}" /> 
+0

Leider hinzufügen müssen, wenn ich diesen Text setze = "{Binding Path = CurrentScenario.SystemDemand, Mode = TwoWay, StringFormat = '{0} gpm'}" Ich habe den Fehler bekommen ** Erwartet '' '** – AhammadaliPK

+0

Leichter Tippfehler. entweder setzen Sie ein Leerzeichen vor dem '{0} gpm' oder benutzen Sie den umgekehrten Schrägstrich' \ {0} gpm'. Der Designer beschwert sich, wenn Sie mit einem '{' – Nkosi

+0

Sorry, wenn ich StringFormat = '/ {0} gpm legte, bekam ich die Ausgabe als **/12.8 gpm **, Ein führender Schrägstrich wird – AhammadaliPK

1

Was den Ansatz der Frage Autor und die akzeptierte Antwort gemeinsam haben, ist, dass sie die (editierbar) Wert mischen und die (nicht editierbar) Einheit.

Warum nicht einen gewöhnlichen TextBlock mit dem Gerät in der Nähe des Endes Ihrer TextBox platzieren?

Sie können sogar eine Grid verwenden, damit das Gerät "innerhalb" der TextBox erscheint.

<Grid> 
    <TextBox Text="{Binding...StringToNumberConverter...etc}" Padding="0,0,24,0"/> 
    <TextBlock Text="gpm" HorizontalAlignment="Right" IsHitTestVisible="false"/> 
</Grid>