65.9K
CodeProject 正在变化。 阅读更多。
Home

绑定中的字符串格式化

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.90/5 (9投票s)

2013年12月14日

CPOL
viewsIcon

8190

如何在绑定中格式化字符串

引言

最近,我有一个机会对一个 WPF 应用程序进行代码审查,以提高性能。因此,在我的审查过程中,我遇到了下面的代码片段

<WrapPanel>
        <TextBlock Text="{Binding Path=FirstName,Mode=OneWay}"/>
        <TextBlock Text=" "/>
        <TextBlock Text="{Binding Path=LastName,Mode=OneWay}"/>
 </WrapPanel> 

如果你仔细分析这个片段,你肯定会找到优化它的方法。我指的是字符串格式化以及绑定部分。

正如大家所知,自 .NET 3.5 SP1 起,我们有一个名为 StringFormat 的属性。那么,为什么我们不能在绑定中使用这个属性呢?如果你想更改上面的代码以包含 StringFormat,那么它看起来会像这样

<WrapPanel>
        <TextBlock>
                <TextBlock.Text>
                    <MultiBinding StringFormat="{}{0} {1}">
                        <Binding Path="FirstName" Mode="OneWay"/>
                        <Binding Path="LastName" Mode="OneWay"/>
                    </MultiBinding>
                </TextBlock.Text>
        </TextBlock>
 </WrapPanel> 

现在,这里可以清楚地看到编写这种代码的双重好处。第一个好处是,可以使用一个绑定代替两个绑定,另一个好处是,可以使用一个 TextBlock 代替三个 TextBlock

这可能有助于提高性能,尤其是在用作具有大量项目的 ItemsControl DataTemplate 时。

请注意,开头的 {} 部分是一个转义序列,否则 XAML 解析器会将 { 视为标记扩展的开始。

© . All rights reserved.