я нашел свой вопрос именно здесь: Отключить анимацию в диаграммах ModernUI
но нет ответа.
Я программирую (Mvvm) приложение и хотел использовать Torsten Mandelkows MetroChart. Он, наконец, работает (после многих ошибок), но теперь индикаторная диаграмма работает крайне медленно до своего окончательного результата.
Например, для достижения 50% требуется около 20 секунд. Есть ли способ немедленно достичь его окончательной ценности?
Вот мои фрагменты:
Вид:
<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; }
}
`
Я нашел способ ускорить это. Думаю, это довольно грязное решение, но оно работает для меня:
в 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();
}