- 先对比下WPF中DynamicDataDisplay动态库中ChartPlotter类型图表大概xmal文件中代码为:
...
xmlns:d3="http://research.microsoft.com/DynamicDataDisplay/1.0"
...>
...
<Border Grid.Row="1" Padding="10" Margin="0">
<d3:ChartPlotter x:Name="plotter1" Grid.Row="1" Grid.Column="1" Background="Transparent">
<d3:ChartPlotter.HorizontalAxis>
<d3:HorizontalDateTimeAxis x:Name="dateAxis1"/>
</d3:ChartPlotter.HorizontalAxis>
<d3:VerticalAxisTitle FontFamily="Georgia" Content="{DynamicResource Flow}" />
<d3:HorizontalAxisTitle FontFamily="Georgia" Content="{DynamicResource DateTime}"/>
</d3:ChartPlotter>
</Border>
...
- 添加WPF控件复选框CheckBox,有几条线就添加几个复选框,这里示范用了5个,实现分别勾选要显示的曲线,示例代码如下(Content为曲线名字):
<CheckBox x:Name="CheckBox1" Content="SP1" HorizontalAlignment="Left" Margin="562,15,0,0" VerticalAlignment="Top" IsChecked="True" Checked="CheckBox_Checked1" Unchecked="CheckBox_Unchecked1" Foreground="#FF22E66E"/>
<CheckBox x:Name="CheckBox2" Content="SP2" HorizontalAlignment="Left" Margin="633,15,0,0" VerticalAlignment="Top" IsChecked="True" Checked="CheckBox_Checked2" Unchecked="CheckBox_Unchecked2" Foreground="#FFD8A61D"/>
<CheckBox x:Name="CheckBox3" Content="BP" HorizontalAlignment="Left" Margin="700,15,0,0" VerticalAlignment="Top" IsChecked="True" Checked="CheckBox_Checked3" Unchecked="CheckBox_Unchecked3"/>
<CheckBox x:Name="CheckBox4" Content="TMA_P" HorizontalAlignment="Left" Margin="758,15,0,0" VerticalAlignment="Top" IsChecked="True" Checked="CheckBox_Checked4" Unchecked="CheckBox_Unchecked4" Foreground="#FFE24E25"/>
<CheckBox x:Name="CheckBox5" Content="H2O_P" HorizontalAlignment="Left" Margin="824,15,0,0" VerticalAlignment="Top" IsChecked="True" Checked="CheckBox_Checked5" Unchecked="CheckBox_Unchecked5" Foreground="#FF1273D1"/>
- 可以看到在步骤2中已经给复选框添加好了Checked事件和Unchecked事件,这是勾选和取消勾选的意思,下面需要去xmal.cs文件中添加事件代码实现是否显示曲线:
private void CheckBox_Checked1(object sender, RoutedEventArgs e)
{
var line = plotter.Children.OfType<LineGraph>().FirstOrDefault(graph => graph.Description.ToString() == "SP1");
if (line != null)
{
line.Visibility = Visibility.Visible;
}
}
private void CheckBox_Unchecked1(object sender, RoutedEventArgs e)
{
var line = plotter.Children.OfType<LineGraph>().FirstOrDefault(graph => graph.Description.ToString() == "SP1");
if (line != null)
{
line.Visibility = Visibility.Collapsed; // 或者设置为Visibility.Hidden
}
}
private void CheckBox_Checked2(object sender, RoutedEventArgs e)
{
var line = plotter.Children.OfType<LineGraph>().FirstOrDefault(graph => graph.Description.ToString() == "SP2");
if (line != null)
{
line.Visibility = Visibility.Visible;
}
}
private void CheckBox_Unchecked2(object sender, RoutedEventArgs e)
{
var line = plotter.Children.OfType<LineGraph>().FirstOrDefault(graph => graph.Description.ToString() == "SP2");
if (line != null)
{
line.Visibility = Visibility.Collapsed; // 或者设置为Visibility.Hidden
}
}
private void CheckBox_Checked3(object sender, RoutedEventArgs e)
{
var line = plotter.Children.OfType<LineGraph>().FirstOrDefault(graph => graph.Description.ToString() == "BP");
if (line != null)
{
line.Visibility = Visibility.Visible;
}
}
private void CheckBox_Unchecked3(object sender, RoutedEventArgs e)
{
var line = plotter.Children.OfType<LineGraph>().FirstOrDefault(graph => graph.Description.ToString() == "BP");
if (line != null)
{
line.Visibility = Visibility.Collapsed; // 或者设置为Visibility.Hidden
}
}
private void CheckBox_Checked4(object sender, RoutedEventArgs e)
{
var line = plotter.Children.OfType<LineGraph>().FirstOrDefault(graph => graph.Description.ToString() == "TMA_P");
if (line != null)
{
line.Visibility = Visibility.Visible;
}
}
private void CheckBox_Unchecked4(object sender, RoutedEventArgs e)
{
var line = plotter.Children.OfType<LineGraph>().FirstOrDefault(graph => graph.Description.ToString() == "TMA_P");
if (line != null)
{
line.Visibility = Visibility.Collapsed; // 或者设置为Visibility.Hidden
}
}
private void CheckBox_Checked5(object sender, RoutedEventArgs e)
{
var line = plotter.Children.OfType<LineGraph>().FirstOrDefault(graph => graph.Description.ToString() == "H2O_P");
if (line != null)
{
line.Visibility = Visibility.Visible;
}
}
private void CheckBox_Unchecked5(object sender, RoutedEventArgs e)
{
var line = plotter.Children.OfType<LineGraph>().FirstOrDefault(graph => graph.Description.ToString() == "H2O_P");
if (line != null)
{
line.Visibility = Visibility.Collapsed; // 或者设置为Visibility.Hidden
}
}
作者:freesheep720