9

私が開発しているアプリケーションには、エキスパンダーで作られた一種のアコーディオンがありますが、一度に 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>
4

3 に答える 3

1

これは私が気付いていなかった有益な情報です。

http://msdn.microsoft.com/library/windows/apps/hh780657.aspx

メモ ItemsControl は、ListView、GridView、FlipView、ListBox、ComboBox コントロールなど、いくつかの一般的なコレクション コントロールの基本クラスです。これらの例では、ListView コントロールと GridView コントロールを使用していますが、情報は一般に ItemsControls に適用されます。

つまり、ItemsControl を使用することは、ListBox を使用してからハイライトと選択機能を無効にしようとすると、実際にそれを独自の基本クラスに戻すため、私の問題を解決する方法です。

于 2013-07-25T19:10:29.707 に答える