WPF将StringFormat文本作为DynamicResource

时间:2017-09-29 21:45:45

标签: wpf string-formatting dynamicresource

所以我有TextBlock

<TextBlock
    Text="{Binding Path=Value, ElementName=progressBarColumn, StringFormat={}{0:N2}%}"
    VerticalAlignment="Center"
    HorizontalAlignment="Center"
    Foreground="{DynamicResource ProgressBarForegroundColor}"
    FontFamily="{DynamicResource ProgressBarFontFamily}"
    FontSize="{DynamicResource ProgressBarFontSize}"/>

我希望能够将String FormatN2控制到N1等等,所以我创建了这个:

<system:String x:Key="ProgressBarStringFormat">N2</system:String>

用法:

Text="{Binding Path=Value, ElementName=progressBarColumn, StringFormat={}{0:ProgressBarStringFormat}%}"

在我的Progress-Bar而不是Value我只看到ProgressBarStringFormat文字。

1 个答案:

答案 0 :(得分:0)

除了Binding属性的文字之外,你什么也没有。但是,如果您愿意使用ContentControl或Label而不是TextBlock,则可以在其ContentStringFormat属性上粘贴DynamicResource或Binding:

<Label
    Margin="0"
    Content="{Binding Value, ElementName=progressBarColumn}"
    ContentStringFormat="{DynamicResource ProgressBarStringFormat}"
    VerticalAlignment="Center"
    HorizontalAlignment="Center"
    Foreground="{DynamicResource ProgressBarForegroundColor}"
    TextElement.FontFamily="{DynamicResource ProgressBarFontFamily}"
    TextElement.FontSize="{DynamicResource ProgressBarFontSize}"
    />

我将边距设置为零,因为与TextBlock不同,Label会以隐式样式设置默认边距。