WPF 文本 StringFormat 作为 DynamicResource

WPF text StringFormat as 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 FormatN2N1 等等,所以我创建了这个:

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

用法:

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

在我的 Progress-Bar 中,我只看到 ProgressBarStringFormat 文本,而不是 Value

除了绑定的 属性 的文字外,您不能拥有任何东西。但是,如果您愿意使用 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}"
    />

我将边距设置为零,因为 Label 将在其隐式样式中设置默认边距,这与 TextBlock 不同。