热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在WPF中删除LineGraph周围的边框?

如何删除图片中所示的边框?

如何删除图片中所示的边框?

如何在WPF中删除LineGraph周围的边框?

我正在尝试删除图像周围的边框
并尝试了一些解决方案,例如
BorderBrush="Transparent" BorderThickness="0"
但是这些解决方案不起作用。
我只希望窗口中有图形部分。
我正在提供XAMLCS代码。请帮我解决问题。

XAML:

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




BorderBrush="Transparent">
DependentvaluePath="Y" Margin="0,0" IndependentvaluePath="X"
ItemsSource="{Binding}" IsSelectiOnEnabled="True"
DataPoint>













CS:

public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
showColumnChart();
}
private void showColumnChart()
{
double y1 = 5,y2 = 1,y3 = 3,y4 =2;
ObservableCollection data = new ObservableCollection{
new MyDataModelClass {X = "A",Y = y1,BindingInfo = "Hidden" },new MyDataModelClass {X = "B",Y = y2,new MyDataModelClass {X = "C",Y = y3,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"


BorderBrush="Transparent"
BorderThickness="0">









,

此控件没有提供便捷的方法。但是,即使这段代码更加脆弱,总有一种方法可以做到。

首先,您可以使用Visual Studio调试器探索控件的结构。在VS 2019中有Live Visual Tree:
Live Visual Tree
在以前的版本中,您可以在调试器中找到它:
enter image description here
enter image description here
第三党也有很多其他类似的工具。
一旦在结构中找到需要更改的控件(在本例中为EdgePanel内部的Border)。然后,您可以从后面的代码中更改此控件。您无法在构造函数中执行此操作,因为可视树尚未在构造时加载。您可以在“加载”中执行此操作。因此,您需要在图表控件上订阅Loaded事件(也许还可以订阅LayoutUpdate事件,因为在布局更新时它可以恢复其原始值)。函数FindVisualChild帮助在视觉树中按类型和名称查找控件。找到边框后,我们可以使边框透明(安全选项),也可以使其厚度为0,但可能会影响布局。我们也可以删除它,但是依赖它的某些内容可能会损坏。
请注意,如果您更改主题,此代码可能会停止工作,因为它可能具有不同的可视树。

void LineChart_OnLoaded(object sender,RoutedEventArgs e) {
if (sender is Chart chart) {
RemoveBorder(chart);
}
}
void RemoveBorder(Chart chart) {
EdgePanel ep = FindVisualChild(chart,"ChartArea");
Border border = FindVisualChild(ep);
border.BorderBrush = Brushes.Transparent;
}
static T FindVisualChild(DependencyObject obj,string name = null) where T : FrameworkElement {
int childrenCount = VisualTreeHelper.GetChildrenCount(obj);
for (int i = 0; i DependencyObject child = VisualTreeHelper.GetChild(obj,i);
if (child is T element && (name == null || name == element.Name)) {
return element;
}
T childOfChild = FindVisualChild(child,name);
if (childOfChild != null) {
return childOfChild;
}
}
return null;
}

推荐阅读
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • Oracle seg,V$TEMPSEG_USAGE与Oracle排序的关系及使用方法
    本文介绍了Oracle seg,V$TEMPSEG_USAGE与Oracle排序之间的关系,V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,通过查询dba_objects和dba_synonyms视图可以了解到它们的详细信息。同时,还探讨了V$TEMPSEG_USAGE的使用方法。 ... [详细]
  • iOS Swift中如何实现自动登录?
    本文介绍了在iOS Swift中如何实现自动登录的方法,包括使用故事板、SWRevealViewController等技术,以及解决用户注销后重新登录自动跳转到主页的问题。 ... [详细]
  • Whatsthedifferencebetweento_aandto_ary?to_a和to_ary有什么区别? ... [详细]
  • WPF开发心率检测大数据曲线图的高性能实现方法
    本文介绍了在WPF开发中实现心率检测大数据曲线图的高性能方法。作者尝试过使用Canvas和第三方开源库,但性能和功能都不理想。最终作者选择使用DrawingVisual对象,并结合局部显示的方式实现了自己想要的效果。文章详细介绍了实现思路和具体代码,对于不熟悉DrawingVisual的读者可以去微软官网了解更多细节。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • 本文详细介绍了Android中的坐标系以及与View相关的方法。首先介绍了Android坐标系和视图坐标系的概念,并通过图示进行了解释。接着提到了View的大小可以超过手机屏幕,并且只有在手机屏幕内才能看到。最后,作者表示将在后续文章中继续探讨与View相关的内容。 ... [详细]
author-avatar
swaimprichett_556
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有