Я разрабатываю программу в UWP, которая будет иметь возможность отображать данные на экране и должна поддерживать возможность того, что пользователь может захотеть нанести на нее большое количество серий.
ДиаграммаЯ использую RadCartesianChart от Telerik, и я использую RadLegendControl для отображения легенды для диаграммы.Это выложено на сетке с двумя столбцами и одной строкой.В первом столбце (0) находится RadLegendControl.Во втором столбце (1) находится RadCartesianChart.
Когда нарисовано большое количество серий, это может привести к тому, что легенда опустится ниже нижней части приложения, отрезав оставшиеся элементы в легенде.По сути, это «чрезмерный» пример использования этой диаграммы, и я хочу убедиться, что он может работать эффективно, если использовать его в этом виде.
Есть ли способ добавить полосу прокрутки кУправление легендой, чтобы пользователь мог просматривать легенду?Или я должен искать другой способ отображения легенды?
Это для программы, созданной в UWP, которая в настоящее время нацелена на минимальную версию Windows 10 1803 и нацелена на 1809, используя Visual Studio 2019.
Я сделал сообщение на форуме Telerik , задавая этот вопрос, и было высказано предположение, что, возможно, существует внешний компонент, позволяющий легенде расширяться до ее полной высоты за пределами экрана, и они предоставиливозможное решение в попытке установить явную максимальную высоту, чтобы увидеть полосу прокрутки, когда она достигает этой верхней границы.Таким образом, в XAML я установил MaxHeight = "300", что намного меньше, чем требовалось бы легенде средней диаграммы, чтобы я мог легко видеть, появилась ли полоса прокрутки.Когда я попробовал это, полоса прокрутки не появилась.
Первоначально у меня был нарисован RadLegendControl с использованием StackPanel для изменения порядка легенды для отображения сверху вниз, а не слева направо, чтобы она могла совмещаться рядом сДиаграмма.Я подозревал, что внутренний ScrollViewer в StackPanel мог конфликтовать с внутренним ScrollViewer в RadLegendControl.Я удалил макет StackPanel, чтобы он не мог конфликтовать, чтобы увидеть, появится ли затем ScrollViewer.Это не удалось (я также протестировал горизонтальное, но безуспешно).
Я пробовал другие решения, такие как привязка свойства MaxHeight RadLegendControl к высоте или ActualHeight строки Grid, в которой он находится., явно устанавливая VerticalScrollMode в значение Enabled и VerticalScrollVisibility в Visible.
Это код RadLegendControl в XAML, при этом для MaxHeight явно задано значение 300:
<telerikPrimitives:RadLegendControl
x:Name="LegendForChart"
LegendProvider="{Binding ElementName=MainChart}"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
HorizontalContentAlignment="Left"
VerticalContentAlignment="Top"
MaxHeight="300"
>
<telerikPrimitives:RadLegendControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</telerikPrimitives:RadLegendControl.ItemsPanel>
</telerikPrimitives:RadLegendControl>
Где telerikPrimitives определяется следующими:
xmlns:telerikPrimitives="using:Telerik.UI.Xaml.Controls.Primitives"
Я попытался добавить / изменить следующие строки:
MaxHeight="{Binding ElementName=ChartGrid, Path=Height, Mode=Oneway}"
MaxHeight="{Binding ElementName=ChartGrid, Path=ActualHeight, Mode=Oneway}"
ScrollViewer.VerticalScrollBarVisibility="Visible"
ScrollViewer.VerticalScrollMode="Enabled"
В настоящее время с моим файлом, который может отображать ~ 332 Series на моей диаграмме, у легенды нет полосы прокруткипоказ, с элементами, исчезающими за кадром.(К сожалению, мне не хватает представителя для показа изображения).
Я хотел бы найти решение, при котором при наличии достаточного количества серий появится вертикальная полоса прокрутки, которая позволит пользователю прокручивать страницу вниз.Легенда.
Я понимаю, что это может показаться чрезмерным, но я хотел бы убедиться, что моя программа ведет себя должным образом, если пользователь по какой-либо причине решит отобразить большое количество серий на диаграмме.