質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio 2013

Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

4809閲覧

[WPF]ListBoxにツールチップ表示した場合、自動改行指定はできるのでしょうか?

zanac

総合スコア25

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio 2013

Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

0クリップ

投稿2016/12/14 13:58

###前提・実現したいこと
いつもお世話になっています。
こちらで教えていただいた方法で、ListBoxの項目に対して、ツールチップを表示できるようにしています。

これに対して質問なのですが、
ツールチップ表示する文字列を自動で改行するということはできるのでしょうか?

現状、画面の解像度が低く、ツールチップ表示する文字が長すぎると、1行ツールチップ表示に収まらずはみ出てしまう状態です。
これを1行におさまらなければ、改行するようにしたいのですが、できるようなアイデアが思い浮かばず悩んでおあります。
もしそのようなやり方おありであれば、ご教授をお願いいたします。

現状のコーディングを以下に記載いたします。

###該当のソースコード
XAML(ツールチップ表示)

<ListBox.ItemContainerStyle> <Style TargetType="ListBoxItem"> <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=Content}" /> </Style> </ListBox.ItemContainerStyle>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんにちは。

ToolTipにTextWrapping設定したTextBlockあたりを入れてやれば解決できると思います。

XML

1<ListBox.ItemContainerStyle> 2 <Style TargetType="ListBoxItem"> 3 <Setter Property="ToolTip"> 4 <Setter.Value> 5 <TextBlock TextWrapping="Wrap" Text="aaaaa ... zzzzz" /> 6 </Setter.Value> 7 </Setter> 8 </Style> 9</ListBox.ItemContainerStyle>

TextBlockをぶら下げることで、ListBoxItem.Contentをバインドさせるのがちょっと面倒になりそうな気もしますが…。

投稿2016/12/14 14:59

Tak1wa

総合スコア4791

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

haru666

2016/12/15 06:15

ListBoxItem.Contentのバインドは簡単にできるので補足です。   ItemsSourceがString配列の場合のBindingは省略するだけでOKです <TextBlock Text="{Binding}" />   また、DisplayMemberPathと同じものを表示したい場合 <TextBlock Text="{Binding 同じプロパティ}" /> を入れておけばバインド出来ます。   ListBoxItemのデータコンテキストがItemsSource内の一要素になってると思って頂いたら大丈夫です。
Tak1wa

2016/12/15 06:29

ItemsSourceにバインドされてればそのとおりだと思いますが、RelativeSource=Selfを使われているのでDataContextではなく、Content自体をバインドしたいのかもしれません。 その場合だと大変かな?と思いました。
haru666

2016/12/15 06:42

割と難しく考えてRelativeSourceを使ってしまっている人も多く見るので、念のための補足といった感じですね あくまでDisplayMemberと連動したいというのであればFindAncestorでListBoxItemにすればいけるんでしょうかね…?
Tak1wa

2016/12/15 07:06

そうですね。補足ありがとうございます。シンプルにDataContextを経由したほうが正攻法ですね。 Popup系はVisualTreeにないのでFindAncestorが使えなさそうです。 PlacementTargetを経由してどうにかListBoxItemにアクセスできないかなーとは思ってるのですが…。
haru666

2016/12/15 07:42

む、本当ですね…試してみたけど簡単に取れませんね… うーん…やはり直アクセスですかね
zanac

2016/12/18 09:28

すみません。いろいろ情報ありがとうございます。 ですが、皆様のコメントの内容が高度すぎて全く話についていけておりません・・・ 結果として、どのようにすればよいことになるのでしょうか?
Tak1wa

2016/12/18 09:33

ちょっと苦労しそうで放置してましたすみません、ListBox.ItemsSourceはそもそもどう指定されてます?
zanac

2016/12/18 09:55

ListBox.ItemsSourceというものはXAML上に明示的に指定しておりません。 ListBoxとして設定しているのは、上記の「該当ソースコード」欄に記載しているソースがすべてとなります・・・
Tak1wa

2016/12/18 10:09

そうですが、現時点で簡単なのはListBox.ItemsSourceに要素のソースを設定する方法かなーというところです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問