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>

代わりにいくつかの水平 StackPanels を使用できると思いますが、空白を追加せずにテキストを連結する「適切な」方法はありますか?

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 に答える