WPF MVVM Не обновляет представлениеC#

Место общения программистов C#
Ответить
Anonymous
 WPF MVVM Не обновляет представление

Сообщение Anonymous »

Я разрабатываю приложение, для которого нужен секундомер. И я хочу показать прошедшее время с помощью текстового блока. Моя проблема в том, что представление не обновляется, но я могу использовать ICommands.
Здесь я назначаю 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));
}
}
Вот мой XAML А вот изображение, где точка останова поймана
Изображение

Команды работают, таймер работает, метод NotifyPropertyChanged тоже работает (параметр name тоже правильный), но вид нет обновление.
Как это исправить?

Подробнее здесь: https://stackoverflow.com/questions/793 ... ating-view
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»