2016-09-27 4 views
0

私は、テキストの前にスペースを追加する必要があり、私の構造は、このようなものです:ので、内容があるべき表示DynamicResourceにスペースを追加しますか?

<Setter Property="Text" Value="{DynamicResource oneMatch}"/> 

" oneMatchContent"

過去には、私はStringFormatを使用して同様のことをした:

<TextBlock Text="{Binding oneMatch, StringFormat=This is {0}}"/> 

しかし、セッターのValueにはStringFormatが表示されません。

+0

コンバータの適用はどうですか? http://stackoverflow.com/questions/378979/is-it-possible-to-use-a-converter-within-a-style – zquanghoangz

答えて

1

あなたがこのすべてのコンテキストを秘密にしているので、私は確信が持てませんが、SetterTextBlockに適用されているStyleです。

その場合、代わりにLabel(またはContentControlの子孫)を使用し、そのContentStringFormatプロパティを設定することもできます。

<Style 
    x:Key="oneMatchLabelStyle" 
    TargetType="Label" 
    BasedOn="{StaticResource {x:Type Label}}" 
    > 
    <Setter Property="Content" Value="{DynamicResource oneMatch}" /> 
    <Setter Property="ContentStringFormat" Value="This is {0}" /> 
    <!-- Set padding to 0 so it'll look like TextBlock did in your layout --> 
    <Setter Property="Padding" Value="0" /> 
</Style> 

... 

<Label Style="{DynamicResource oneMatchLabelStyle}" /> 

あなたは文字列リソース自体に先頭のスペースを追加したい場合は、単にXAMLで改行なしスペース(Unicode U+00A0)を指定します。 HTML文字エンティティ&nbsp;はXAMLでサポートされているので、代わりに進文字エンティティを使用していません。

<sys:String x:Key="oneMatch">&#xa0;Blah blah blah</sys:String> 

し、任意の特別なフォーマットせずにそのリソースを使用します。

+0

の代わりに ''に問題を解決するためにいくつか追加することができますスペースはhtmlのように? &nbsp何か? – Unchained

0

あなたがこのアプローチを空想取得することができます。

<Window.Resources> 
    <sys:String x:Key="SecretKey">SecretText</sys:String> 

    <Style x:Key="ContentKey" TargetType="Label"> 
     <Setter Property="Content"> 
      <Setter.Value> 
       <TextBlock> 
        <TextBlock.Inlines> 
         <Run Text="&#xa0;"/> 
         <Run Text="{DynamicResource SecretKey}"/> 
        </TextBlock.Inlines> 
       </TextBlock> 
      </Setter.Value> 
     </Setter> 
    </Style>    
</Window.Resources> 
... 
<Label Style="{StaticResource ContentKey}"/> 

あなたは今Runに任意のテキストを使用することができます。

関連する問題