Диаграмма WPF DateTimeAxis проблема? - PullRequest
1 голос
/ 03 января 2012

Я создал график с сериями столбцов, используя визуализацию данных, и я взял 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 ]

1 голос
/ 10 февраля 2012

Проверьте и измените свойства Minimum и Maximum при необходимости.

Не используйте запасные значения в привязке, но контролируйте даты, установленные вами. Если вы не используете модель представления, вы можете использовать логику установщика в коде позади.

<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
        //...
    }
}
0 голосов
/ 05 января 2012

я нашел решение сам ...

сбросить макс с завтрашнего дня и мин с вчерашним. Я исправлю проблему .. как ..

xAxis.Minimum = DateTime.Now.AddDays(-1);
                xAxis.Maximum = DateTime.Now.AddDays(1);
0 голосов
/ 03 января 2012

То, что здесь может происходить, это то, что новое минимальное значение, которое вы устанавливаете, больше старого максимума, поэтому в строке 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больше, чем проанализировано от DT

С уважением,

...