1

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

结果:350cps/ppb

数字部分 (350) 和测量单位 ("ppb") 都是绑定属性,而 "Result" 和 "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

为了使其格式正确,我可以使用以下内容,但它不是很易读(并且“:”和“/”很容易错过):-

<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,但是有没有一种“正确”的方式来连接文本而不添加空格?

4

1 回答 1

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>
于 2013-07-04T07:47:17.323 回答