私が開発しているアプリケーションには、エキスパンダーで作られた一種のアコーディオンがありますが、一度に 1 つのアイテムを開くだけではなく、各 exapnder が独立して動作します。各エキスパンダーは、ビュー モデルのコレクション内の項目に関連付けられています。
私の現在の解決策は、リストボックスを使用してから、リスト itemsource をコレクションにバインドし、アイテム テンプレートにエキスパンダーと exapnders のコンテンツをレンダリングさせることです。
問題は、リストボックスが各エキスパンダーを(明らかに)アイテムとして扱い、選択と強調表示を可能にすることです。強調表示は少し見苦しく、無効にすることもできますが、選択するとリストがスクロールして展開されたエキスパンダーをできるだけ多く表示するため、いくつかの問題が発生します。
アイテムテンプレートを使用して含まれているコントロールをバインドできるが、選択と強調表示を行わない、スタックパネル(おそらく)に少し似ているWPFコントロールはありますか?
<ListBox Grid.Row="0" Grid.Column="0" Width="Auto" SelectionMode="Single" ItemsSource="{Binding Path=MeasurementSources}">
<ListBox.ItemTemplate>
<DataTemplate>
<Expander Header="{Binding Name}" IsEnabled="{Binding Available}">
<ListBox Width="Auto" SelectionMode="Single"
ItemsSource="{Binding Path=Measurements}"
SelectedItem="{Binding Path=SelectedMeasurement}">
<ListBox.ItemTemplate>
<DataTemplate>
<WrapPanel>
<TextBlock Text="{Binding Name}" FontWeight="Bold" />
<TextBlock Text=" "/>
<TextBlock Text="{Binding Created}"/>
</WrapPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Expander>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>