将ObservableCollection计数绑定到wpf标签并格式化标签

时间:2014-07-24 13:43:30

标签: wpf xaml label

我有一个标签,我想在列表中显示所选项目的数量(列表项目是从网格中选择的)。一切正常,标签显示数字。我想要的是使标签显示“选择5项”。现在,我只得到数字5.这是xaml:

<Label  Height="23" HorizontalAlignment="Left" Margin="7,2,0,0" Name="lblSelectionSummary" VerticalAlignment="Top" Width="557" FontFamily="Arial" >
        <Label.Content>
            <Binding Path="SelectedRows.Count" />
        </Label.Content>
    </Label>

我很接近这个人。

1 个答案:

答案 0 :(得分:3)

您只需在绑定中指定StringFormat

这应该做

<Binding Path="SelectedRows.Count" StringFormat="{}{0} items selected"/>
上面的

可能不适用于Label,因为它遵循内容模型,因此您可能需要使用TextBlock

样品

<TextBlock Height="23" HorizontalAlignment="Left" Margin="7,2,0,0" Name="lblSelectionSummary" VerticalAlignment="Top" Width="557" FontFamily="Arial" >
    <TextBlock.Text>
        <Binding Path="SelectedRows.Count" 
                 StringFormat="{}{0} items selected"/>
    </TextBlock.Text>
</TextBlock>

<TextBlock Height="23"
           HorizontalAlignment="Left"
           Margin="7,2,0,0"
           Name="lblSelectionSummary"
           VerticalAlignment="Top"
           Width="557"
           FontFamily="Arial"
           Text="{Binding SelectedRows.Count, StringFormat={}{0} items selected}" />

将字符串格式与标签

一起使用

绑定中的StringFormat适用于字符串类型属性,并且因为Label的Content属性类型是对象所以StringFormat不起作用

感谢blindmeis提示

由于Label遵循Content模型,它使用ContentStringFormat来格式化值,下面是一个使用相同的示例

<Label Content="{Binding SelectedRows.Count}" 
       ContentStringFormat="{}{0} items selected" />