1. ホーム
  2. wpf

[解決済み] WPFのStringFormatによるバインディングがToolTipで機能しない件

2023-03-15 18:10:09

質問

次のコードは、全く同じバインディング表記を使用して、MyTextBlockという名前のTextBlockのTextをTextBoxのTextとToolTipプロパティにバインドする簡単なバインディングを持っています。

<StackPanel>
    <TextBlock x:Name="MyTextBlock">Foo Bar</TextBlock>
    <TextBox    Text="{Binding ElementName=MyTextBlock, Path=Text, StringFormat='It is: \{0\}'}"
             ToolTip="{Binding ElementName=MyTextBlock, Path=Text, StringFormat='It is: \{0\}'}" />
</StackPanel>

また、バインディングでは .NET 3.5 SP1 で導入された StringFormat プロパティを使用します。 を使用します。これは、上記のTextプロパティでは正常に動作しますが、ToolTipでは壊れているように見えます。期待される結果は、"It is: Foo Bar"ですが、TextBoxにカーソルを合わせると、ToolTipはバインディング値のみを表示し、文字列フォーマットされた値は表示されません。何かアイデアはありますか?

どのように解決するのですか?

以下は、言葉足らずな解決方法ですが、うまくいきます。

<StackPanel>
  <TextBox Text="{Binding Path=., StringFormat='The answer is: {0}'}">
    <TextBox.DataContext>
      <sys:Int32>42</sys:Int32>
    </TextBox.DataContext>
    <TextBox.ToolTip>
      <ToolTip Content="{Binding}" ContentStringFormat="{}The answer is: {0}" />
    </TextBox.ToolTip>
  </TextBox>
</StackPanel>

私はもっとシンプルな構文、私の最初の質問にあるようなものを好みます。