如何在使用绑定的XAML中格式化字符串?

7
在WPF中,我可以这样做:
<TextBlock Text="{Binding Products.Count, StringFormat='{0} Products'}"

在Windows 8 / WinRT中,相应的语法不再支持,那么它的等效语法是什么?
2个回答

8
你可以使用这个:
<TextBlock>
    <Run Text="{Binding Path=Products.Count}" />
    <Run Text=" Products" />
</TextBlock>

3
根据MSDN上的文档,WinRT中不存在此功能(例如Binding类上的StringFormat)。因此,请在您的ViewModel上进行格式设置。
public class MyViewModel
{
    public IList<Product> Products { get; set; }

    public string ProductsText 
    { 
        get 
        { 
            return string.Format("{0} Products", Products.Count); 
        } 
    }
}

注意,您可以挂钩以跟踪对Products集合的更改,并通知ProductsText属性已更改。
并绑定到格式化的属性:
<TextBlock Text="{Binding ProductsText}" />

或者您可以编写一个 IValueConverter 或使用 ContentControl 并从多个部分构建您的文本,我猜有多种方法,但我强烈建议在视图模型中完成。因为视图模型就是为此而设计的。 - nemesv

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