WPF图表DateTimeAxis问题?

时间:2012-01-03 10:34:11

标签: wpf datetime charts data-visualization

我使用数据可视化创建了一个包含列系列的图表,并且我将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。

3 个答案:

答案 0 :(得分:1)

根据需要检查并修改MinimumMaximum属性。

不要在绑定中使用回退值,而是控制自己设置的日期。如果您不使用视图模型,则可以在代码隐藏中使用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);