XAML中的StringFormat

6

我正在尝试将我的 string 格式化为每个 3 位加上逗号,并在它不是整数时加上小数点。我已经检查了大约 20 个示例,这是我找到的最接近的:

<TextBlock x:Name="countTextBlock" Text="{Binding Count, StringFormat={0:n}}" />

但是我出现了一个在Binding类型中未找到'StringFormat'属性。的错误。

您有什么想法这里出了什么问题吗? Windows Phone 8.1似乎与WPF不同,因为所有WPF资源都说应该这样做。

(该string不断更新,因此我需要代码在XAML中。 我还需要它保持绑定状态。除非我不能两全其美。)


可能重复:Windows Phone 8.1 XAML StringFormat - Romasz
1个回答

10
似乎与WinRT中的Binding类似,Windows Phone通用应用程序中的Binding也没有StringFormat属性。解决此限制的一种可能方法是使用Converter,如此博客文章所述。
简要概括该文章,您可以创建一个IValueConverter实现,接受字符串格式作为参数:
public sealed class StringFormatConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        if (value == null)
            return null;

        if (parameter == null)
            return value;

        return string.Format((string)parameter, value);
    }

    public object ConvertBack(object value, Type targetType, object parameter,
        string language)
    {
        throw new NotImplementedException();
    }
}
在您的 XAML 中创建一个以上转换器的资源,然后您可以像这样使用它,例如:
<TextBlock x:Name="countTextBlock" 
           Text="{Binding Count, 
                          Converter={StaticResource StringFormatConverter},
                          ConverterParameter='{}{0:n}'}" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接