WPF实现隐藏和显示DynamicDataDisplay动态库中ChartPlotter类型图表中绘制的曲线的方法

  1. 先对比下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>
...

  1. 添加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"/>
  1. 可以看到在步骤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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值