Почему не происходит события для обновления состояния рисования стрелки?
Не будьте слишком строги ко мне, я учусь.
Таймер вызывается в MainWindow.xaml.css
Code Model:
public class TimeD
{
public double hss { get; set; }
public double mss { get; set; }
public double sss { get; set; }
public void RR()
{
DispatcherTimer Timer = new DispatcherTimer
{
Interval = TimeSpan.FromSeconds(1)
};
Timer.Tick +=Timer_Tick;
Timer.Start();
}
public void Timer_Tick(object sender, EventArgs e)
{
vmClock vmClock = new vmClock();
}
DateTime time = DateTime.Now;
public double getHss()
{
hss = (time.Hour) * (360 / 12);
return hss;
}
public double getMss()
{
mss = (time.Minute) * (360 / 60);
return mss;
}
public double getSss()
{
sss = (time.Second) * (360 / 60);
return sss;
}
}
}
Code ViewModel:
public class vmClock : INotifyPropertyChanged
{
TimeD timeD = new TimeD();
public double angleHour;
public double angleMin;
public double angleSec;
public double AngleHour
{
set
{
angleHour = value;
OnPropertyChanged("AngleHour");
}
get
{
return angleHour;
}
}
public vmClock()
{
AngleHour = timeD.getHss();
AngleMin = timeD.getMss();
AngleSec = timeD.getSss();
}
public double AngleMin
{
set
{
angleMin = value;
OnPropertyChanged("AngleMin");
}
get
{
return angleMin;
}
}
public double AngleSec
{
set
{
angleSec = value;
OnPropertyChanged("AngleSec");
}
get
{
return angleSec;
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string prop = null)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(prop));
}
}
}
Code XAML:
Вот отрывок, где у меня Binding
<RotateTransform Angle="{Binding AngleMin, UpdateSourceTrigger=PropertyChanged}"/>
<RotateTransform Angle="{Binding AngleSec, UpdateSourceTrigger=PropertyChanged}"/>
new vmClock(), это не кажется подозрительным? Покажите, где вы настраиваетеDataContext. – aepot Aug 16 '21 at 10:50{Binding AngleMin, где свойствоAngleMin? В классеvmClock, ок, а где свойство этого класса? Или, где он задан какDataContext? Я лишь вижуvmClock vmClock = new vmClock();, то есть создается локальная переменная, с которой ничего не делается. Так о каком обновлении может идти речь, если данных как таковых и нет? – EvgeniyZ Aug 16 '21 at 10:53DataContextобъект, в нем нужные вам данные. Вы вместо того, чтобы менять эти данные, пытаетесь в левом классе, который совершенно не знает про основные ваши данные, создать повторно, новый объект классаvmClock. Вывод? Вам надо вTimeDпередатьvmClockи менять свойства в уже созданном ранее классе. Ну либо обратное - ваш классTimeDпусть содержит событие, которое по тику будет вызываться, а вvmClockподписываетесь на него и делаете нужные действия (это даже правильней). И да, УЖАСНЫЕ названия! – EvgeniyZ Aug 16 '21 at 15:11' я его за таймер убрал а в самом таймере уже задаю
– Mr. Empty Aug 16 '21 at 15:41