将wpf编写的用户控件winform_从头实现一个WPF条形图

时间如流水,只能流去不流回!

点赞再看,养成习惯,这是您给我创作的动力!

本文 Dotnet9 https://dotnet9.com 已收录,站长乐于分享dotnet相关技术,比如Winform、WPF、ASP.NET Core等,亦有C++桌面相关的Qt Quick和Qt Widgets等,只分享自己熟悉的、自己会的。

阅读导航:

  • 一、先看效果
  • 二、本文背景
  • 三、代码实现
  • 四、文章参考
  • 五、代码下载

一、先看效果

353d4cdb59de7b767d57396a7457ee65.png

二、本文背景

有没有这种场景:开源控件库或者收费的控件库,条形图或者柱状图都非常强大,但我的业务就是不符合,就是要自己设计呢?本文通过简单的实现一个条形图功能,以后类似的统计图可以在这上面进行修改,原理是类似的。

三、代码实现

小编使用.Net Core 3.1创建的WPF工程,创建名称为“BarChart”的解决方案后,添加名称为”Bar“的WPF用户控件,这个控件就是上图中的单个柱子,下面是Bar.xaml代码

Bar.xaml.cs代码,主要是绑定前景色及背景色,及柱子百分比值。

using System.ComponentModel;using System.Windows;using System.Windows.Controls;using System.Windows.Media;namespace BarChart{    ///     /// BarChart.xaml 的交互逻辑    ///     public partial class Bar  : UserControl, INotifyPropertyChanged    {        public event PropertyChangedEventHandler PropertyChanged;        private void NotifyPropertyChanged(string info)        {            if (PropertyChanged != null)            {                PropertyChanged(this, new PropertyChangedEventArgs(info));            }        }        private double _value;        public double Value        {            get { return _value; }            set            {                _value = value;                UpdateBarHeight();                NotifyPropertyChanged("Value");            }        }        private double maxValue;        public double MaxValue        {            get { return maxValue; }            set            {                maxValue = value;                UpdateBarHeight();                NotifyPropertyChanged("MaxValue");            }        }        private double barHeight;        public double BarHeight        {            get { return barHeight; }            set            {                barHeight = value;                NotifyPropertyChanged("BarHeight");            }        }        private Brush color;        public Brush Color        {            get { return color; }            set            {                color = value;                NotifyPropertyChanged("Color");            }        }        private void UpdateBarHeight()        {            if (maxValue > 0)            {                var percent = (_value * 100) / maxValue;                BarHeight = (percent * this.ActualHeight) / 100;            }        }        public Bar()        {            InitializeComponent();            this.DataContext = this;            color = Brushes.Black;        }        private void UserControl_Loaded(object sender, RoutedEventArgs e)        {            UpdateBarHeight();        }        private void Grid_SizeChanged(object sender, SizeChangedEventArgs e)        {            UpdateBarHeight();        }    }}

主窗体MainWindow.xaml,添加显示的业务数据,目前只是展示了进度值,其他标签只要你看懂了代码,很好加的,比如每根柱子,上面颜色显示一种意义名称、下面显示另一种意义名称。

四、文章参考

参考:
Design com WPF : https://www.youtube.com/watch?v=3Rz9YrwrznQ

五、代码下载

文章中代码已经全部贴出,小编这里还是建议:能使用开源的控件库还是使用开源控件库吧,自己定义确实有点麻烦。

本文只是给个例子,方便自定义扩展。

除非注明,文章均由 Dotnet9 整理发布,欢迎转载。

转载请注明本文地址:https://dotnet9.com/2019/12/it-technology/csharp/wpf/custom-barchart.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值