Also in meinem XAML habe ich das:
%Vor%Wenn der Wert von MyDecimalProperty beispielsweise 5.35570256 ist, dann ist der angezeigte TextBlock-Wert 5.356
Gibt es eine Möglichkeit, den Textblock stattdessen mit 5.355 anzuzeigen (d. h., um die Zahl abzuschneiden anstatt sie zu runden), indem Sie StringFormat verwenden?
Ich weiß, dass ich einen Wertkonverter verwenden kann, aber ich wollte wissen, ob ich StringFormat oder etwas anderes, das im XAML definiert ist, verwenden kann, um dasselbe zu erreichen.
Aktualisieren : Die Leute fragen sich, warum ich keinen Konverter benutzen will. Bitte lesen Sie oben fett. Es ist nicht so, dass ich nicht will; Ich wollte nur wissen, ob ich dasselbe mit StringFormat oder einem anderen XAML-Konstrukt machen kann.
Danke.
wenn ich StringFormat oder irgendetwas anderes, das im XAML definiert ist, verwenden kann, um dasselbe zu erreichen
StringFormat ist spezifisch für die Binding Markup Extension (eigentlich die bindende Basis BindingBase. StringFormat-Eigenschaft (System.Windows.Data) ) und verwendet letztendlich die String-Formatierung von .Net, z. B. ToString("G3")
(siehe Standard-Zahlenformat-Strings ), die Runden und nicht abgeschnitten; Es ist also nicht möglich, solche Features in Xaml zu überschreiben.
Erstellen Sie eine weitere Eigenschaft im Viewmodel, die einem zugeordneten string
-Typ zugeordnet ist, der den gewünschten Wert einfach parkt, aber abgeschnitten wird. Dann binden Sie als solche.
ViewModel
%Vor%Xaml
%Vor%Ergebnis
Wenn Sie keinen Konverter verwenden möchten (ich weiß nicht warum, aber Sie haben Gründe), können Sie den zurückgegebenen Typ Ihrer Bindungsquelle ändern und dann IFormattable Schnittstelle.
Sehen Sie sich dieses Beispiel an. Zuallererst sollte Ihr MyDecimalProperty
keine Dezimalzahl mehr ausgeben. Sie sollten es ändern, um ein TruncatedDecimal
zurückzugeben. Hier sein Code:
Jetzt können Sie in Ihrem XAML die Formatzeichenfolge verwenden, die Sie benötigen:
%Vor%Also, zum Beispiel, wenn der DataContext auf diese Weise gesetzt ist:
%Vor%Sie sehen 0.49978 . Ich hoffe, dass diese Lösung für Ihre Bedürfnisse geeignet ist und Ihnen helfen kann.
Tags und Links wpf c# xaml string-formatting