/ / Кращий макет для відображення декількох діаграм wpf C # - wpf, макет, діаграми

Кращий макет для відображення декількох графіків wpf C # - wpf, макет, діаграми

У мене є дивна проблема, що я хочу показати кілька графіків під час виконання, а іноді й одного діаграму. Просимо запропонувати мені гнучку версію, оскільки в майбутньому буде більше діаграм.

В даний час я використовую сітку їм не ділиться з моїм кодом, тому що це все безладно, але я показую вам його макет, який я досяг із компонуванням сітки.

                     ______________________________________
|                 |                  |
|                 |                  |
|     Chart 1     |     Chart 2      |
|                 |                  |
|-----------------|------------------|
|                 |                  |
|                 |                  |
|                 |                  |
|     Chart 3     |     Chart 4      |
|                 |                  |
-------------------------------------

І графіки будуть зростати в майбутньому, я хочугнучкий графік, який повинен дозволяти мені знімати одну діаграму в центрі, і якщо є чотири діаграми, вони повинні бути показані, як цей інший мудрий одиночний графік повинен бути показаний в центрі.

Відповіді:

1 для відповіді № 1

Чому б не використовувати WrapPanel із повзунком масштабування, який контролює розмір діаграм.

Якщо є одна діаграма, ви зможете збільшити масштаб повного простору. Якщо є будь-яке довільне число, воно перетвориться на кілька рядків.

Припустимо, ваші графіки є у колекції:

<ListBox ItemsSource="..." ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel IsItemsHost="True" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemsTemplate>
<DataTemplate>
<YourChart Height="{Binding Path=Value, ElementName=_sizeSlider}" Stretch="Uniform" />
</DataTemplate>
</ListBox.ItemsTemplate>
</ListBox>

І повзунок:

<Slider Name="_sizeSlider" Minimum="25" Maximum="500" Value="80" TickFrequency="1" HorizontalAlignment="Right" Width="113" />

0 для відповіді № 2

Як на рахунок UniformGrid?


0 для відповіді № 3

Приклад завеликий, щоб розміщувати його в коментарях Приховування всіх стовпців для відображення залишкового стовпця вцентр екрана не має ефекту, якщо встановити його вертикальне та горизонтальне вирівнювання в центр, воно не працює, а зменшує його розмір і не змінює його розташування ... тому Idea Flop ... запропонує новий макет * XAML

<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="MultipleChartsLayoutTesting.MainWindow"
x:Name="Window"
Title="MainWindow"
Width="640" Height="480">

<Grid x:Name="LayoutRoot">
<UniformGrid x:Name="uniformGrid" Margin="8" Cursor="Hand">
<Label Content="Label1" Background="AliceBlue" Name="lbl1" MouseDown="lbl1_MouseDown"></Label>

<Label Content="Label2" Background="Aqua" Name="lbl2" MouseDown="lbl2_MouseDown"></Label>

<Label Content="Label3" Background="Aquamarine" Name="lbl3" MouseDown="lbl2_MouseDown"></Label>

<Label Content="Label4" Background="Azure" Name="lbl4" MouseDown="lbl1_MouseDown"></Label>

<Label Content="Label5" Background="AliceBlue" Name="lbl5" MouseDown="lbl1_MouseDown"></Label>

<Label Content="Label6" Background="Aqua" Name="lbl6" MouseDown="lbl2_MouseDown"></Label>

<Label Content="Label7" Background="Aquamarine" Name="lbl7" MouseDown="lbl2_MouseDown"></Label>

<Label Content="Label8" Background="Azure" Name="lbl8" MouseDown="lbl1_MouseDown"></Label>
</UniformGrid>
</Grid>

CS FILE

за допомогою системи; за допомогою System.Collections.Родовий; за допомогою System.Linq; за допомогою System.Text; за допомогою System.Windows; за допомогою System.Windows.Controls; за допомогою System.Windows.Data; використання System.Windows.Documents; за допомогою System.Windows.Input; за допомогою System.Windows.Media; за допомогою System.Windows.Media.Imaging; за допомогою System.Windows.Shapes; використання System.Windows.Controls.Primitive;  простір імен MultipleChartsLayoutTesting { /// /// Логіка взаємодії для MainWindow.xaml /// публічний частковий клас MainWindow: Window { загальнодоступне головне вікно () { this.InitializeComponent (); lbl1.Visibility = Видимість.Схований; lbl2.Visibility = Видимість. Схована; lbl3.Visibility = Видимість.Схований; lbl4.Visibility = Видимість.Схований; lbl5.Visibility = Видимість. Схована; lbl6.Visibility = Видимість. Схована; lbl7.Visibility = Видимість.Схований; } private void lbl1_MouseDown (відправник об'єкта, MouseButtonEventArgs e) {  lbl1.Background = System.Windows.Media.Brushes.Aqua;  lbl2.Background = System.Windows.Media.Brushes.White;  lbl3.Background = System.Windows.Media.Brushes.White;  lbl4.Background = System.Windows.Media.Brushes.Aqua;  lbl5.Background = System.Windows.Media.Brushes.Aqua;  lbl6.Background = System.Windows.Media.Brushes.White;  lbl7.Background = System.Windows.Media.Brushes.White;  lbl8.Background = System.Windows.Media.Brushes.Aqua;  }    private void lbl2_MouseDown (відправник об'єкта, MouseButtonEventArgs e) {  lbl1.Background = System.Windows.Media.Brushes.White;  lbl2.Background = System.Windows.Media.Brushes.Aqua;  lbl3.Background = System.Windows.Media.Brushes.Aqua;  lbl4.Background = System.Windows.Media.Brushes.White;   lbl5.Background = System.Windows.Media.Brushes.White;  lbl6.Background = System.Windows.Media.Brushes.Aqua;  lbl7.Background = System.Windows.Media.Brushes.Aqua;  lbl8.Background = System.Windows.Media.Brushes.White;  } } }