WPF MVVM aktualisiert die Ansicht nicht
Posted: 05 Jan 2025, 13:32
Ich entwickle eine Anwendung, die eine Stoppuhr benötigt. Und ich möchte die verstrichene Zeit mithilfe eines Textblocks anzeigen. Mein Problem ist, dass die Ansicht nicht aktualisiert wird, ich aber ICommands verwenden kann.
Hier weise ich den DataContext zu
Hier ist mein ViewModel
Hier ist mein XAML
Und hier ist ein Bild, auf dem der Haltepunkt gefangen ist

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?
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?