wpf - 如何在 wpf 中的 DateTime 上使用 canvas.SetLeft
问题描述
Sesaonallist
是一个ObservableCollection
类型DataPoint
。
我正在尝试将datapoint
可观察集合中的每个都写为椭圆并将其绘制到画布上。问题是,X axis
我DateTime
得到了错误
无法将 DateTime 转换为双精度
当我使用Canvas.SetLeft(ellipse, Seasonallist[i].X);
.
我不想使用任何第三方库来执行此操作,我应该查看转换器吗?
Seasonallist = new ObservableCollection<DataPoint>();
if (Seasonallist != null)
{
for (int i = 0; i <= Seasonallist.Count - 1; i++)
{
Ellipse ellipse = new Ellipse();
ellipse.Width = 5;
ellipse.Height = 5;
ellipse.Fill = Brushes.Blue;
Canvas.SetLeft(ellipse, Seasonallist[i].X); <--error here
Canvas.SetTop(ellipse, Seasonallist.Y);
textCanvas.Children.Add(ellipse);
}
}
public class DataPoint
{
public DateTime X { get; set; }
public double Y { get; set; }
}
解决方案
是的,您需要使用转换器,但首先您必须确定时间间隔的宽度。最好使用刻度值来完成,因此:
TicksPerPixel 是显示持续时间/显示宽度
然后,您可以存储此值并使用公式 DateTime.Ticks / TicksPerPixel 计算将其绘制在正确位置所需的 left 属性。
推荐阅读
- c++ - 通过 TCS 和 TES 传递数据
- typescript - 如何让 Visual Studio Code 真正显示所有 TypeScript 类型错误?
- javascript - node.js:昂贵的请求
- bash - Bash 脚本 sshd 组检查
- javascript - 在递归对象结构中搜索对象(代表文件系统)
- r - 将一个功能的默认设置为另一个功能的默认设置
- javascript - 如何设置可以在 react-select 中选择的最大项目数?
- css - IE 11 中的过滤器:灰度(100%)用于图像
- javascript - 使用 lodash 展平对象数组中的数组
- django - Django按外键字段排序