Здесь я назначаю DataContext
Код: Выделить всё
public partial class ProgressPage : Grid
{
public ProgressPage(ProjectInfo projectInfo)
{
DataContext = new ProgressViewModel(projectInfo);
InitializeComponent();
}
}
Код: Выделить всё
public class ProgressViewModel : INotifyPropertyChanged
{
private ProjectInfo projectInfo;
private ICommand _start;
private DispatcherTimer timer = new()
{
Interval = TimeSpan.FromSeconds(1)
};
public event PropertyChangedEventHandler? PropertyChanged;
public ProjectInfo ProjectInfo
{
get { return projectInfo; }
set
{
projectInfo = value;
NotifyPropertyChanged();
}
}
private string elapsedTimeString;
public string ElapsedTimeString
{
get { return elapsedTimeString; }
set
{
elapsedTimeString = value;
NotifyPropertyChanged();
}
}
public ICommand StartCommand
{
get
{
_start ??= new RelayCommand(
p => true,
p => Start());
return _start;
}
}
private void Start()
{
ProjectInfo.CurrentStartedTime = DateTime.Now;
timer.Start();
}
public ProgressViewModel(ProjectInfo projectInfo)
{
ProjectInfo = projectInfo;
timer.Tick += Tick;
}
private void Tick(object? sender, EventArgs e)
{
ElapsedTimeString = (DateTime.Now - ProjectInfo.CurrentStartedTime).ToString(@"hh\:mm\:ss");
}
private void NotifyPropertyChanged([CallerMemberName] string name = null)
{
PropertyChanged?.Invoke(null, new PropertyChangedEventArgs(name));
}
}
Код: Выделить всё

Команды работают, таймер работает, метод NotifyPropertyChanged тоже работает (параметр name тоже правильный), но вид нет обновление.
Как это исправить?
Подробнее здесь: https://stackoverflow.com/questions/793 ... ating-view
Мобильная версия