我使用数据可视化创建了一个包含列系列的图表,并且我将DateTimeAxis作为x轴,并且我有一个带有时间间隔的组合框,并根据组合框的选择我需要将间隔绑定到我的运行时的图形。问题是,如果我随机选择间隔,如
,我会收到错误var xAxis = countChart.ActualAxes.OfType<DateTimeAxis>().FirstOrDefault(ax => ax.Orientation == AxisOrientation.X);
xAxis.Minimum = DateTime.Parse(fromDt.ToString("HH:mm:ss"));
xAxis.Maximum = DateTime.Parse(toDt.ToString("HH:mm:ss"));
"The minimum value must be smaller than or equal to the maximum value."
所以我怎样才能克服我的问题,请帮助我。
谢谢, @Nagaraju。
答案 0 :(得分:1)
根据需要检查并修改Minimum
和Maximum
属性。
不要在绑定中使用回退值,而是控制自己设置的日期。如果您不使用视图模型,则可以在代码隐藏中使用setter逻辑。
<charting:DateTimeAxis
Orientation="X"
IntervalType="{Binding IntervalType, FallbackValue=Years}"
Interval="{Binding Interval}"
Maximum="{Binding EndDate}"
Minimum="{Binding StartDate}" />
public DateTime StartDate
{
get { return _startDate; }
set
{
if (EndDate < value)
{
EndDate = value;
}
// Set property and notify that property has changed
//...
}
}
private DateTime _endDate;
public DateTime EndDate
{
get { return _endDate; }
set
{
if (StartDate > value)
{
StartDate = value;
}
// Set property and notify that property has changed
//...
}
}
答案 1 :(得分:0)
这里可能发生的是您设置的新最小值大于旧的最大值,因此在xAxis.Minimum = ...行会出现异常。你可以尝试这个解决方法(也是为了证明这个理论)吗?只需更改在XAxis上设置最小值/最大值的顺序。
所以,请使用:
xAxis.Maximum = DateTime.Parse(toDt.ToString("HH:mm:ss")); // Set max first
xAxis.Minimum = DateTime.Parse(fromDt.ToString("HH:mm:ss"));
而不是:
xAxis.Minimum = DateTime.Parse(fromDt.ToString("HH:mm:ss"));
xAxis.Maximum = DateTime.Parse(toDt.ToString("HH:mm:ss"));
这可确保最大值始终更大,只要解析的toDT值大于解析的fromDT
致以最诚挚的问候,
答案 2 :(得分:0)
我找到了自己的解决方案..
用明天重置最大值,用昨天重置最小值..'lll修复问题..比如..
xAxis.Minimum = DateTime.Now.AddDays(-1);
xAxis.Maximum = DateTime.Now.AddDays(1);