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

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

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

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

WPF

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

Q&A

解決済

3回答

2312閲覧

[WPF、XAML]リストボックスの1つ目のアイテムに特定のデザインを適用する

bbdd

総合スコア43

C#

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

WPF

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

0グッド

0クリップ

投稿2018/05/14 03:20

編集2018/05/14 05:10

前提

・C#
・Visual Studio 2017
・WPFアプリ

やりたいこと

リストボックスを使用する際に、アイテムの1つ目に特定のものを使用したいです。
イメージは下図のようなものです

イメージ図

例えば、
・1つ目のアイテムはユーザーの情報(名前、詳細プロフィール情報)
・2つ目以降のアイテムはユーザーがお気に入り登録した情報を表示
のような目的で使用したいと思っています。

また、「コンテンツ全体をスクロール」させたいと思っています
→ 下部のアイテム(この場合お気に入りアイテム)のところだけをリストボックスにする(コンポーネントを分ける)というパターンも考えられますが、要望としては全体をスクロールさせたいです。。
もし分けるような方針にした場合、デザイン上リストボックスの高さを十分に確保できず、1度に見られるアイテム数が少なくなりよろしくないです。そこでリストボックス内にプロフィール要素も格納することでリストボックスの高さを確保し、スクロールした際に1度に見られるアイテム数を増やしたいなぁ、と思った次第です。

(できていること)
・リストボックスにデータテンプレートを設定、データコンテキストにリストを渡してリストボックスに表示するのは実装できています。

リストボックスにおいて、特定(この場合は1つ目)のアイテムにだけ固有のスタイル?デザイン?を適用することはできますでしょうか?
できるとしたらどのように実装していくのが良いのか、もしご存知でしたらアドバイス等頂けると幸いです。

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

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

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

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

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

ebiryo

2018/05/14 04:02

構成が良くわからないので何とも言えないのですが、「2つ目以降はデータコンテキストとしてListを渡し云々」とありますが、一つ目もデータコンテキストに設定しているListのゼロ番目の要素なんですよね?Listということは同じ型の要素は格納されているという認識であっていますか?
bbdd

2018/05/14 05:15

>一つ目もデータコンテキストに設定しているListのゼロ番目の要素なんですよね? すみません、この思考抜け落ちていました。確かにデータコンテキストととしてListを渡している以上1つ目もListの0番目の要素になりますね。その認識で問題ないです。
guest

回答3

0

ベストアンサー

リストボックスの中に違うコンテンツを入れるのではなく、プロフィールとお気に入りは分けたほうが筋が良いです。

XML

1<Border> 2 <Grid> 3 <Grid.RowDefinitions> 4 <RowDefinition Height="auto"/> 5 <RowDefinition Height="*"/> 6 </Grid.RowDefinitions> 7 <ContentControl Name="UserProfile"/> 8 <ListBox Name="Favorites"/> 9 </Grid> 10</Border>

投稿2018/05/14 03:59

hihijiji

総合スコア4150

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

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

bbdd

2018/05/14 05:25

いつも回答ありがとうございます! すみません、自分の説明で不十分なところがありましたので、追記させていただきました。確認いただけると嬉しいです。 具体的には以下の部分です。 > また、「コンテンツ全体をスクロール」させたいと思っています → 下部のアイテム(この場合お気に入りアイテム)のところだけをリストボックスにする(コンポーネントを分ける)というパターンも考えられますが、要望としては全体をスクロールさせたいです。。 もし分けるような方針にした場合、デザイン上リストボックスの高さを十分に確保できず、1度に見られるアイテム数が少なくなりよろしくないです。そこでリストボックス内にプロフィール要素も格納することでリストボックスの高さを確保し、スクロールした際に1度に見られるアイテム数を増やしたいなぁ、と思った次第です。
hihijiji

2018/05/14 06:42

どんな場合であっても違うものを一緒くたに入れることはお勧めできません。 全体をScrollViewerに入れるとか、ListBoxのScrollViewer.ScrollChangedイベントを拾って一番上じゃなかったらプロフィール部分を非表示にするとか幾らでもやり方はあると思います。
guest

0

ListBox に含めるべきでは無いと言う意見には私も賛成です。

ListBox にこだわらない(要素の選択不要、仮想化不要)なら、HeaderedItemsControl を ScrollViewer で囲む手があります。

あるいは、CollectionViewSource を使って ListBox の要素をグループ化し、 GroupStyle を変更してヘッダー部分を固定情報にするなど。

投稿2018/05/14 11:17

gaya-K

総合スコア449

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

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

0

DataTemplateSelector を使ってこれから表示しようとするデータの位置に応じてテンプレートを返してあげればよいのでは? 
DataTemplateSelector で検索すれば色々情報があるかと思います。

投稿2018/05/14 06:22

ebiryo

総合スコア797

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問