Анимация MetroChart очень медленная - PullRequest
0 голосов
/ 25 октября 2018

я нашел свой вопрос именно здесь: Отключить анимацию в диаграммах ModernUI

, но на него не ответили.

Я программирую (Mvvm) приложение ихотел использовать Торстена Манделькова MetroChart.Наконец-то он работает (после многих ошибок), но теперь Калибровка очень медленная, пока не достигнет окончательного значения.

Например, ему нужно около 20 секунд, чтобы достичь 50%.Есть ли способ мгновенно достичь окончательной стоимости?

Вот мои фрагменты:

Просмотр:

    <Viewbox Height="190">
            <metroChart:RadialGaugeChart Background="{x:Null}" ChartTitle="Einzelteile" ChartSubTitle="" Foreground="LightGray" Height="300" Width="300" Margin="0,0,0,0" >
                <metroChart:RadialGaugeChart.Series>
                    <metroChart:ChartSeries
                    DisplayMember="Title"
                    ItemsSource="{Binding Status}"
                    SeriesTitle="Status"
                    HorizontalAlignment="Stretch"
                    ValueMember="Percent" 
                    VerticalAlignment="Stretch">
                    </metroChart:ChartSeries>
                </metroChart:RadialGaugeChart.Series>
            </metroChart:RadialGaugeChart>
        </Viewbox>`

ViewModel:

...

            Status c = new Status();
            c.Title = "Parts";
            if (RecievedArticle != null) c.Percent = RecievedArticle.CalcPercentStatus();
            Status.Add(c);
...
public ObservableCollection<Status> Status { get; private set; } = new ObservableCollection<Status>();
}

public class Status
{
    public string Title { get; set; }
    public int Percent { get; set; }

}

`

1 Ответ

0 голосов
/ 28 октября 2018

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

в TorstenMandelkow.MetroChart - это класс с именем RadialGaugePiece

. Я отредактировал два метода:

    public RadialGaugePiece()
{
  //this.timer = new DispatcherTimer();
  //this.timer.Tick += new EventHandler(this.timer_Tick);
  this.Loaded += new RoutedEventHandler(this.RadialGaugePiece_Loaded);
}

    private void UpdatePie()
{
  if (this.AnimatedValue == this.Value)
    return;
  this.animationCounter = 0.0;
  this.animationStartValue = this.AnimatedValue;
        //this.timer.Interval = TimeSpan.FromMilliseconds(33.3);
    this.timer.Interval = TimeSpan.FromMilliseconds(0);
        this.timer.Start();
  this.Tick();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...