Hier weise ich den DataContext zu
Code: Select all
public partial class ProgressPage : Grid
{
public ProgressPage(ProjectInfo projectInfo)
{
DataContext = new ProgressViewModel(projectInfo);
InitializeComponent();
}
}
Code: Select all
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));
}
}
Code: Select all

Die Befehle funktionieren, der Timer funktioniert, die NotifyPropertyChanged-Methode funktioniert ebenfalls (der Namensparameter ist ebenfalls korrekt), die Ansicht jedoch nicht Aktualisierung.
Wie kann ich das beheben?