SciChartLegendコントロールはItemsControlで、LegendModifier.LegendDataプロパティを使用してSeriesInfoのObservableCollectionにバインドしてデータを表示するだけです。
英語では、ItemsControlに階層グループを表示する方法を理解できれば、SciChart Legendコントロールで同じことができます。
ItemsControlから継承した独自のクラスを作成してLegendModifier.LegendDataにバインドし、必要に応じてアイテムをグループ化する必要があります。または、添付のビヘイビアまたはコンバーターを使用してアイテムをグループ化します。
次に、LegendModifier Documentationのテクニックを使用して独自のクラスまたはItemsControl(SciChartLegendではなく)を使用できます。あなたが代わりにSciChartLegendにLegendModifier.LegendDataを結合して、アプリケーションのどこにでも置くことができます
SciChartLegendするLegendModifier.LegendDataバインディング - 代わり
。 LegendModifier.LegendDataをItemsControl.ItemsSourceにバインドし、必要に応じてテンプレートすることもできます。
<!-- Somewhere else in your application, you can declare n ItemsControl -->
<!-- and bind to LegendModifier.LegendData -->
<ItemsControl
Margin="23,23"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.VerticalScrollBarVisibility="Auto"
<!-- Here you may need a converter or attached behaviour to group the SeriesInfo as you wish -->
ItemsSource="{Binding LegendData.SeriesInfo, ElementName=legendModifier, Mode=OneWay}">
<ItemsControl.ItemTemplate>
<!-- Here you may need a Hierachical Data Template to display hierachical data -->
<DataTemplate x:Key="SciChartLegendItemTemplate" DataType="chartData:SeriesInfo">
<StackPanel Orientation="Horizontal">
<CheckBox Margin="5,0,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
IsChecked="{Binding RenderableSeries.IsVisible, Mode=TwoWay}"
Visibility="Visible" />
<r:PointMarker Width="40"
Height="10"
Margin="5,0,0,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch"
DataContext="{Binding RenderableSeries}"
DeferredContent="{Binding LegendMarkerTemplate}"
Visibility="{Binding ShowSeriesMarkers, RelativeSource={RelativeSource AncestorType=visuals:SciChartLegend}, Converter={StaticResource BooleanToVisibilityConverter}}" />
<TextBlock Margin="5,0,5,0"
HorizontalAlignment="Left"
Text="{Binding SeriesName}" />
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
このようなものは、完全なソリューションではありませんが、それはItemsControlのテンプレート凡例項目を置換するSciChart伝説APIを使用する方法をお見せません。それで、項目をグループ化し、階層的な方法でデータを表示することができるはずです。
こんにちは、私はあなたの助言に従おうとしましたが、真実は私がそれをかなり理解していないと言われます。正直言って、私はあなたが2つか3つの代替解決策を提案しているかどうかも分かりません。 カスタム構造を表示するカスタムLegendModifier.LegendTemplateを作成しようとしました。私はグループのテンプレートのために、グループのコンテンツのためのItemsControlを含んでいます。このItemsControlには別のカスタムテンプレートがあります。その結果、伝説は全く示されていませんでした。 残念ながら、私の限られたWPF知識では、私が間違っていたアイデアを持つために私にはあまりにも多くの不明点があります。 – Shaggydog
私はあなたの答えのこの部分に集中したいと思います: "あなたがする必要があるかもしれないことは、ItemsControlを継承し、LegendModifier.LegendDataにバインドし、あなたが望むように項目をグループ化する独自のクラスを作成することです。 これは、凡例変更をそのままにして、グループ化を個別に処理するカスタムのItemsControl実装を作成することができますか?私の質問は、SciChartにSciChartの伝説の代わりにこのカスタムコントロールを使用させるにはどうしたらいいですか? – Shaggydog
はい、正確です。 SciChartLegendは単なるItemControlで、それを箱から出して作るためにテンプレート化されています。 LegendModifierのドキュメントhttp://www.scichart.com/documentation/v4.x/LegendModifier.htmlには、「代替 - LegendModifier.LegendDataをSciChartLegendにバインドする」セクションがあります。 LegendModifier.LegendDataは単にSeriesInfoのコレクションです。 SeriesInfoについては、http://www.scichart.com/documentation/v4.x/SeriesInfo%20%E2%80%93%20the%20ViewModels%20for%20Tooltips%20and%20Legends.htmlで詳しく説明しています。あなたが詳細を望むならば新しい質問! –