问题是:实现这一点的最佳方法是什么?
有1个选项:
1)我们取 3 个图表并将它们放在网格中的 1 个位置,根据用户的选择,我们显示所需的
2)创建几个Series,根据结果,显示想要的
在我看来,只有这两种选择都像拐杖。如果这些都不是拐杖,那么哪个更好?
标记代码:
<Controls:MetroWindow x:Class="ExpansesCalculation.ReportChart"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ExpansesCalculation"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
xmlns:chartingToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit"
mc:Ignorable="d"
Title="Графики"
Height="600"
Width="800"
MinHeight="600"
MinWidth="800"
Background="#FFF0EAEA"
WindowStartupLocation="CenterScreen">
<Grid>
<!--Rows and columns definition-->
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="90"/>
<RowDefinition/>
<RowDefinition Height="90"/>
</Grid.RowDefinitions>
<!--Chart Types-->
<GroupBox Header="Тип графика"
Grid.ColumnSpan="7"
VerticalAlignment="Center"
HorizontalAlignment="Center">
<StackPanel Orientation="Horizontal"
VerticalAlignment="Center"
HorizontalAlignment="Center">
<RadioButton GroupName="gt"
Name="rbLinear"
Margin="5"
IsChecked="{Binding IsLinear}">Линейный
<i:Interaction.Triggers>
<i:EventTrigger EventName="Checked">
<i:InvokeCommandAction Command="{Binding UpdateComboBoxCommand}" CommandParameter="MyParam"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</RadioButton>
<RadioButton GroupName="gt"
Name="rbRound"
Margin="5"
IsChecked="{Binding IsRound, Mode=TwoWay}">Круговой
<i:Interaction.Triggers>
<i:EventTrigger EventName="Checked">
<i:InvokeCommandAction Command="{Binding UpdateComboBoxCommand}" CommandParameter="MyParam"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</RadioButton>
<ComboBox Name="cbChartTypes"
Margin="5"
Width="200"
ItemsSource="{Binding ComboBoxContent}"/>
</StackPanel>
</GroupBox>
<!--Date filter-->
<GroupBox Header="Период"
Grid.ColumnSpan="5"
Grid.Column="7"
VerticalAlignment="Center"
HorizontalAlignment="Center">
<StackPanel Orientation="Horizontal"
VerticalAlignment="Center"
HorizontalAlignment="Center">
<TextBlock Margin="5"
Text="C"
VerticalAlignment="Center"/>
<DatePicker Margin="5"
Width="110"/>
<TextBlock Margin="5"
Text="По"
VerticalAlignment="Center"/>
<DatePicker Margin="5"
Width="110"/>
</StackPanel>
</GroupBox>
<!--Categoryes-->
<GroupBox Name="gbCategory"
Header="Категории"
Margin="5"
Grid.Column="9"
Grid.ColumnSpan="3"
Grid.Row="1"
Content="{Binding CheckBoxContent}">
</GroupBox>
<!--Buttons-->
<StackPanel Grid.Row="2"
Grid.Column="9"
Grid.ColumnSpan="3"
VerticalAlignment="Center">
<Button Name="btnApply"
Margin="5"
Command="{Binding ShowGraphic}">Применить</Button>
<Button Name="btnCancel"
Margin="5">Очистить</Button>
</StackPanel>
<!--Chart-->
<chartingToolkit:Chart Grid.Row="1"
Grid.RowSpan="2"
Grid.ColumnSpan="9"
Margin="5">
<chartingToolkit:ColumnSeries ItemsSource="{Binding DataSource}"
DependentValuePath="Value"
IndependentValuePath="Key">
</chartingToolkit:ColumnSeries>
</chartingToolkit:Chart>
</Grid>
实际上,深入研究所有内容,我会说以下内容:一个更简单的选择
1) берем 3 chart и ставим их в 1 месте в сетке, в зависимости от выбора пользователя отображаем нужный有几个原因:使用图例更容易,使用轴更容易。
如果有人有其他建议 - 写。