2012-01-22 2 views
3

私はある種のチャットスタイルのアプリケーションを作成しています。 リストボックスはリストにバインドされていないItemSourceによっていっぱいになっています。 "Message"は、さまざまなプロパティを含むカスタムクラスです。 ListBoxには、Message-Itemを適切に表示するために使用されるDataTemplateが含まれています。リストボックスを拡張するか代替を使用しますか?

ListBoxを使用しているときにいくつか問題が発生しました。
1.ユーザーはテキストを選択できません。
2.アイテムがリストに追加されると、ListBoxは自動的にスクロールしません。

TextBoxのようなものを使いたいのですが、何らかの種類のDataTemplateを使用してテキストプロパティをリストにバインドする方法を理解できませんでした。もちろん、テキストはフォーマット可能でなければなりません。

問題を解決するためにできることはありますか? ListBoxコントロールをオートスクロールコントロールに拡張しようと考えましたが、これはテキスト選択に関する私の問題を解決しません。

+1

なぜItemsControlを使用せず、オートスクロールするために自分のものを実装してみませんか? 'SelectedItem'を追跡する必要があるのではないかと疑いがあります。それがなければ、あなたはテキストを選択できます(' TextBlocks'ではなく 'Labels'を使うことを指定します) – Rachel

答えて

2

解決策が見つかりました。 ItemTemplateをコピーして新しいItemsControl -Controlに貼り付けました。その後、ItemsControlの周りにScrollViewerをラップしました。私はListChangedイベントにイベントハンドラを追加しました。イベントハンドラーの中で、私はMatějZábskýが投稿したItemsControl-Wrapping ScrollViewerのScrollToBottom-Methodを呼び出しました。 テキスト選択に関する問題を解決するために、特定のプロパティを変更したTextBoxを使用しました。 Any way to make a WPF textblock selectable?

ありがとう、Rachel andMatěj。

0

ReachTextBoxとTextBoxを入力するために何らかの種類のReachTextBoxを使用する必要があるかもしれません。

1

確かにDataTemplateを使用して、ListBoxの各アイテムをTextBoxにすることができます。

「の項目がリストに追加取得したときに自動的にスクロールダウンしません2. ListBoxコントロール。」、リストボックスのScrollViewerの上ScrollToBottomを呼び出す(あなたはそれを見つけるためにLogicalTreeHelperを使用することができます)。

関連する問題