.net - 如何删除WPF中折线图周围的边框?

标签 .net wpf

如何去除如图所示的边框?

enter image description here

我正在尝试删除图像周围的边框 并尝试了一些解决方案,例如 BorderBrush="透明" BorderThickness="0" 但这些解决方案不起作用。 我只想在窗口中显示图形部分。 我提供 XAMLCS 代码。请帮我解决一下。

XAML:

<Window x:Class="WpfToolkitChart.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="308.796" Width="436.419" Background="White"
        xmlns:chartingToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit">


    <Window.Resources>
        <Style x:Key="DataPointStyle1" TargetType="{x:Type chartingToolkit:LineDataPoint}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="chartingToolkit:LineDataPoint">
                        <Grid Margin="0,0,0,0">
                            <Ellipse Fill="#617D99" ToolTip="{Binding Y}"/>
                            <Canvas>
                                <Image Source="/Images/marker.png" Cursor="Hand" Height="40" Width="20" Margin="-6,-33,0,0" Visibility="{Binding BindingInfo}" ToolTip="You!!" />
                                <Ellipse  Fill="{Binding Info}" Height="10px" Width="10px" Margin="0,-20,0,0" />
                            </Canvas>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
            <Setter Property="Background" Value="#33557A"></Setter>
        </Style>
    </Window.Resources>

    <Grid Margin="0,0,0,0">
        <chartingToolkit:Chart  Name="lineChart" Title=""  VerticalAlignment="Top" Margin="0,0,0,0" FontSize="10px" Height="269" Foreground="Black"  Background="Transparent" 
                                BorderBrush="Transparent">
            <chartingToolkit:LineSeries Name="lp"
                                        DependentValuePath="Y" Margin="0,0,0,0"  IndependentValuePath="X" 
                                        ItemsSource="{Binding}" IsSelectionEnabled="True"
                                        DataPointStyle="{StaticResource DataPointStyle1}">
            </chartingToolkit:LineSeries>
            <chartingToolkit:Chart.Axes>
                <chartingToolkit:LinearAxis Orientation="Y" Visibility="Hidden"/>
            </chartingToolkit:Chart.Axes>
            <chartingToolkit:Chart.LegendStyle>
                <Style x:Name="LegendHideStyle1" TargetType="Control">
                    <Setter Property="Width" Value="0"/>
                    <Setter Property="Height" Value="0"/>
                </Style>
            </chartingToolkit:Chart.LegendStyle>
            <chartingToolkit:Chart.PlotAreaStyle>
                <Style TargetType="Grid">
                    <Setter Property="Background" Value="Transparent" />
                </Style>
            </chartingToolkit:Chart.PlotAreaStyle>
        </chartingToolkit:Chart>
    </Grid>
</Window>

CS:

    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            showColumnChart();
        }

        private void showColumnChart()
        {
            double y1 = 5, y2 = 1, y3 = 3, y4 =2;
            ObservableCollection<MyDataModelClass> data = new ObservableCollection<MyDataModelClass>{
            new MyDataModelClass {X = "A", Y = y1, BindingInfo = "Hidden" },
            new MyDataModelClass {X = "B", Y = y2, BindingInfo = "Hidden" },
            new MyDataModelClass {X = "C", Y = y3, BindingInfo = "Hidden" },
            new MyDataModelClass {X = "D", Y = y4, BindingInfo = "Visible" }
            };

            double max = data.Max(m => m.Y);
            double min = data.Min(m => m.Y);
            double Percentage = 15;

            double diff = max - min;
            double percetage = (Math.Abs(diff) / 100) * Percentage;
            double minVal = min - percetage;
            double maxVal = max + percetage;
            LinearAxis axis = new LinearAxis();
            axis.Orientation = AxisOrientation.Y;
            axis.Maximum = maxVal;
            axis.Minimum = minVal;
            axis.Visibility = Visibility.Hidden;

            //and use it:
            LineSeries ls = lineChart.Series.First() as LineSeries;
            ls.DependentRangeAxis = axis;

            //lineChart.Visibility = Visibility.Hidden;
            ls.BorderBrush = Brushes.Transparent;


            lineChart.DataContext = data;

        }
    }
}

最佳答案

经过大量搜索和实验,我找到了一个简单的解决方案。我们需要更改图表模板,只需在 XAML 文件中添加以下代码和一个引用:

xmlns:chartingprimitives="clr-namespace:System.Windows.Controls.DataVisualization.Charting.Primitives;assembly=System.Windows.Controls.DataVisualization.Toolkit"


<chartingToolkit:Chart.Template>
                <ControlTemplate TargetType="chartingToolkit:Chart">
                    <Border 
                BorderBrush="Transparent"
                BorderThickness="0">
                        <Grid>
                            <chartingprimitives:EdgePanel x:Name="ChartArea" Style="{TemplateBinding ChartAreaStyle}">
                                <Grid Canvas.ZIndex="-1" Style="{TemplateBinding PlotAreaStyle}" />
                            </chartingprimitives:EdgePanel>
                        </Grid>
                    </Border>
                </ControlTemplate>
            </chartingToolkit:Chart.Template>

关于.net - 如何删除WPF中折线图周围的边框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58744510/

相关文章:

c# - 是否可以使非静态类的实例可供整个 WPF 应用程序使用?

c# - Synchronization.Context 在 Post 上为 null 但在 Send 上不为空

c# - WCF 的凭证委托(delegate)问题

c# - 下载文件并同时读取

c# - LINQ to SQL join 生成在 IS NULL 上加入的 SQL

.net - Windows 窗体应用程序的现代 UI 应用程序设计

c# - 如何向 ItemsControl 中的 WPF 按钮添加相同的命令

c# - 从 XAML 开始 VisualState 转换

c# - 使用复杂的 GUI 编写跨平台应用程序

WPF 数据绑定(bind)和格式化