web-dev-qa-db-ja.com

テキストとバインドパスが混在するボタンコンテンツの指定

いくつかのテキストとバインドパスを組み合わせたボタンのコンテンツをどのように指定しますか?

このような:

<Button Content= "TEXT" + "{Binding Path=ButtonContent}"
20
user565660

このようなもの:

<Button>
   <Button.Content>
      <TextBlock Text="{Binding SomeBindingPath, StringFormat='Some text {0}'}"/>
   </Button.Content>
</Button>

OR

<Button>
   <Button.Content>
      <StackPanel Orientation="Horizontal">
         <TextBlock Text="Some Text"/>
         <TextBlock Text="{Binding SomeBindingPath}"/>
      </StackPanel>
   </Button.Content>
</Button>

基本的に、上記のアプローチを使用して、ボタン内に任意のコンテンツを配置できます。

27
Pavlo Glazkov

ほとんどの場合、TextBlockのように、バインディングでStringFormatを使用できます。

<TextBlock Text="{Binding ElementName=textBox,
                          Path=Text,
                          StringFormat='{}{0} - Added Text'}"/>

ただし、これはContentControlButtonが継承する)には影響しません。代わりに、ContentStringFormatを使用できます

<Button Content="{Binding ElementName=textBox,
                          Path=Text}"
        ContentStringFormat="{}{0} - Added Text"/>

また、

  • ContentControlあなたはContentStringFormatを使用します
  • HeaderedContentControlあなたはHeaderStringFormatを使用します
  • ItemsControlあなたはItemStringFormatを使用します
36
Fredrik Hedblad

他の答えに基づいて、これはもう少し簡潔です:

<Button Content="{Binding FirstName, StringFormat='Click here, {0}!'}" />
1
DPH