WPF - 如何连接文本块?

时间:2013-07-04 07:38:54

标签: xaml

我正在开发一个科学应用程序,需要渲染这样的字符串: -

结果:350cps / ppb

数字部分(350)和测量单位(" ppb")都是绑定属性,而"结果"和" cps"是本地化字符串。 (另请注意,"结果"资源字符串不包含":",因此我可以在其他地方重复使用该字词。)

我使用以下XAML输出这样的字符串: -

<TextBlock>
    <TextBlock Text="{x:Static ar:AppResources.Result}" />
    :
    <TextBlock Text="{Binding Measurement}" />
    <TextBlock Text="{x:Static ar:AppResources.Counts_per_second_abbrev}" />
    /
    <TextBlock Text="{Binding UnitOfMeasure.Name}" />
</TextBlock>

但是这种方法的问题是在每个元素之间插入一个空格,因为它们位于不同的行上,结果是这样的:

结果:350 cps / ppb

为了正确格式化我可以使用以下内容,但它不是非常易读(&#34;:&#34;&#34; /&#34;很容易错过) : -

<TextBlock>
    <TextBlock Text="{x:Static ar:AppResources.Result}" />:
    <TextBlock Text="{Binding Measurement}" /><TextBlock Text="{x:Static ar:AppResources.Counts_per_second_abbrev}" />/<TextBlock Text="{Binding UnitOfMeasure.Name}" />
</TextBlock>

我想我可以使用几个水平的StackPanel,但是有一个&#34;正确的&#34;在没有添加空格的情况下连接文本的方法?

1 个答案:

答案 0 :(得分:2)

没关系,我发现了这个(我没有说过我可以在MultiBinding中使用静态): -

<TextBlock>
    <TextBlock.Text>
        <MultiBinding StringFormat="{}{0}: {1}{2}/{3}">
            <Binding Source="{x:Static ar:AppResources.Result}" />
            <Binding Path="Measurement" />
            <Binding Source="{x:Static ar:AppResources.Counts_per_second_abbrev}" />
            <Binding Path="UnitOfMeasure.Name" />
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>