WPF stringformat仅显示数字

WPF stringformat仅显示数字,wpf,string-formatting,Wpf,String Formatting,我想在wpf应用程序中只显示文本块中的十进制数 例如,我有35.56,我只想展示一下 多谢各位 您可以使用StringFormat将0.56表示为.56,但不能使用StringFormat将35.56表示为.56,因为35.56和.56是两个不同的值 如果出于某种奇怪的原因希望将35.56表示为.56,则最好在视图模型中使用一些自定义逻辑格式化字符串: public string YourPropFormatted { get { string s = yourp

我想在wpf应用程序中只显示文本块中的十进制数

例如,我有35.56,我只想展示一下

多谢各位

您可以使用StringFormat将0.56表示为.56,但不能使用StringFormat将35.56表示为.56,因为35.56和.56是两个不同的值

如果出于某种奇怪的原因希望将35.56表示为.56,则最好在视图模型中使用一些自定义逻辑格式化字符串:

public string YourPropFormatted
{
    get
    {
        string s = yourprop.ToString("#.00", CultureInfo.InvariantCulture);
        int index = s.IndexOf('.');
        return (index > 0) ? s.Substring(index) : s;
    }
}

XAML是一种标记语言,不能处理这个问题。

用另一种获得相同结果的方法来补充mm8答案是实现一个IValueConverter

假设转换器放置在同一名称空间中

<Window.Resources>
    <local:NumberToDecimalPartConverter x:Key="NumberToDecimalPart"/>
</Window.Resources>

<TextBlock Text="{Binding Path=yourprop, Converter={StaticResource NumberToDecimalPart}}" />
当您的属性更改时,UI将被更新,对吗? 使用converter,您还有一个步骤是转换值


所以我在这里做的是,当属性(可能是双值)发生变化时,WPF将从NumberToDecimalPartConverter调用Convert函数。当属性的模式设置为双向时,将回调ConvertWay

或者这些都是一些选项。我想显示的数字总是35.56,但是35带有一个文本块和一个更大的字体大小,因为更重要的是。56带有另一个文本块和一个小字体…@Kiffer:这和你原来问题的答案没有区别。
<Window.Resources>
    <local:NumberToDecimalPartConverter x:Key="NumberToDecimalPart"/>
</Window.Resources>

<TextBlock Text="{Binding Path=yourprop, Converter={StaticResource NumberToDecimalPart}}" />