2015-12-29 14 views
6

テキストブロック内にマルチ綴じのツールチップを作成したいが、試してみるとうまくいかない。WPF - マルチ綴じツールヒント

<TextBlock Text="{Binding Description, StringFormat='Description : {0}{}'}"> 
    <ToolTipService.ToolTip> 
     <TextBlock> 
      <TextBlock.Text> 
       <MultiBinding StringFormat="Description : {0}{1}{}"> 
        <Binding Path="FirstDescription" /> 
        <Binding Path="SecondDescription" /> 
       </MultiBinding> 
      </TextBlock.Text> 
     </TextBlock> 
    </ToolTipService.ToolTip> 
</TextBlock> 

をしかし、私はそれをしようとすると、私がツールチップに表示することです:System.Windows.Controls.TextBlockここ

は、私がこれまで試したものです。

私はtooltipserviceせずにそれを試して、そして唯一のツールチップ、次のように:

<TextBlock Text="{Binding Description, StringFormat='Description : {0}{}'}"> 
    <ToolTip> 
     <TextBlock> 
      <TextBlock.Text> 
       <MultiBinding StringFormat="Description : {0}{1}{}"> 
        <Binding Path="FirstDescription" /> 
        <Binding Path="SecondDescription" /> 
       </MultiBinding> 
      </TextBlock.Text> 
     </TextBlock> 
    </ToolTip> 
</TextBlock> 

画面だけで動けなくなります。

答えて

0

空の括弧を削除するだけです。期待通りに次のコードの作業:

<TextBlock Text="{Binding Description, StringFormat='Description : {0}'}"> 
    <ToolTipService.ToolTip> 
     <TextBlock> 
        <TextBlock.Text> 
         <MultiBinding StringFormat="Description : {0}{1}"> 
          <Binding Path="FirstDescription" /> 
          <Binding Path="SecondDescription" /> 
         </MultiBinding> 
        </TextBlock.Text> 
     </TextBlock> 
    </ToolTipService.ToolTip> 
</TextBlock> 

StringFormatは、左中括弧{XAMLパーサーは、中括弧{}のペアを使用して、それをエスケープする必要がで始まる場合。そうでなければ、マークアップ拡張の構文で中括弧も使用されるため、パーサーは混乱します。

詳細は、{} Escape Sequence/Markup ExtensionのXAMLドキュメントを参照してください。

また、インラインバインディングでは二重引用符を使用できませんが、一重引用符を使用できます。

+0

@Pachuを[OK]を、私は括弧についてあなたに答え、全体workongコードを追加します。あなたはまだそれを使用した後に問題がありましたか? –

+0

私は、ツールヒントに次のテキストが表示されます。「System.Windows.Controls.TextBlock」は、必要なテキストの代わりに表示されます。 – Pachu

+0

申し訳ありませんが、問題を再現できません。私は空の括弧を削除し、コードは正常に動作します。 .netフレームワークのどのバージョンを使用していますか?あなたの例はスタイル/テンプレートの一部かどうかですか? –

2

私はあなたが使用しているバージョンのVSウィッヒを知っているが、dont't:

<TextBlock Text="{Binding Description, StringFormat="Description : {0}{}"}"> 

も私のためにコンパイルされません。

だけ取り除く「というような、空の括弧:あなたがしたい場合にも、このようにそれを書くことができ

<TextBlock Text="{Binding Description, StringFormat=Description : {0}"> 

を」:

<TextBlock> 
    <TextBlock.Text> 
     <Binding Path="Description" StringFormat="Description : {0}" /> 
    </TextBlock.Text> 
    <ToolTipService.ToolTip> 
     <TextBlock> 
        <TextBlock.Text> 
         <MultiBinding StringFormat="Description : {0}{1}"> 
          <Binding Path="FirstDescription" /> 
          <Binding Path="SecondDescription" /> 
         </MultiBinding> 
        </TextBlock.Text> 
     </TextBlock> 
    </ToolTipService.ToolTip> 
</TextBlock> 
+0

空のブラケットを取り外してください。私が言ったように、あなたはあなたの拘束力をどのように満たしているかに問題があるかもしれません。 "System.Windows.Controls.TextBlock"と表示されているので、コード内にDescription = new TextBlock()のようなコードを書くことができますか? – Ouarzy

0

私は、次のコードを試してみましたことをしています完全に働いた:

<TextBlock Margin="20" Foreground="Black" FontSize="20" FontFamily="Century Gothic" Text="{Binding Name1}"> 
     <TextBlock.ToolTip> 
      <TextBlock> 
       <TextBlock.Text> 
        <MultiBinding StringFormat="MultiBinded Tooltip : {0}{1}"> 
         <Binding Path="Name1"/> 
         <Binding Path="Name2"/> 
        </MultiBinding> 
       </TextBlock.Text> 
      </TextBlock> 
     </TextBlock.ToolTip> 
    </TextBlock> 
+0

私はそれを試みましたが、ツールヒントで見ることができるのはSystem.Windows.Controls.TextBlockです。 – Pachu

+0

@Pachuコードを表示できますか?私はあなたのクラスでオーバーライドtostring()メソッドを実装する必要があると思います。 –

+0

@Pachuあなたのツールチップをマルチバインドする方法はありますか? –