DataTemplate与TextBlock,ContentControl.ContentStringFormat被忽略

时间:2015-05-21 01:53:05

标签: wpf contentcontrol

我有以下datatemplate

<DataTemplate x:Key="SectionHeader">
    <Border CornerRadius="5">
        <Border.Background>
            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                <GradientStop Color="#FF1E5270" Offset="1"/>
                <GradientStop Color="#FF3E7595"/>
            </LinearGradientBrush>
        </Border.Background>
        <TextBlock Text="{Binding}" FontSize="14" Foreground="White" Padding="0,5" HorizontalAlignment="Center" FontWeight="Bold" />
    </Border>
</DataTemplate>

我可以按如下方式使用

<ContentControl Content="Summary" ContentTemplate="{StaticResource SectionHeader}" />

这很好用。但是,当我尝试执行以下操作时

<ContentControl Content="{Binding SelectedOrder}" ContentStringFormat="Details for Order \{0\}" ContentTemplate="{StaticResource SectionHeader}" />

我没有得到完整的字符串只有订单号。 有没有办法使用单个数据模板来完成这项工作,还是需要创建第二个数据模板?

1 个答案:

答案 0 :(得分:0)

请参阅MSDN documentation on ContentControl.ContentStringFormat

  

如果您设置ContentTemplate的{​​{1}}或ContentTemplateSelector属性,则会忽略ContentControl属性。

您应该向ContentStringFormat添加ContentStringFormat,或者创建一个简单的StringFormat并设置绑定StringFormatConverter : IValueConverter和{{1>,而不是依赖于Converter如果ConverterParameter不起作用(它也有非明显的限制 - 只有在目标属性类型为Binding.StringFormat时才使用它)。

例如:

String

您可以使用this implementation of StringFormatConverter