2013-11-25 3 views
0

В приложении WPF мне нужно обновить пользовательский интерфейс для всех компонентов за определенный промежуток времени. Мне нужно было знать, что является самым простым способом.Как повысить OnPropertyChanged на определенный интервал времени?

  • Мой вопрос: Как подняться OnPropertyChanged?

  • Знаете ли вы, что лучше?

Просьба предоставить образец кода, если это возможно благодаря

namespace MyClient.Common 
{ 

    public abstract class BindableBase : INotifyPropertyChanged 
    { 
     public event PropertyChangedEventHandler PropertyChanged; 
     protected bool SetProperty<T>(ref T storage, T value, /*[CallerMemberName]*/ String propertyName = null) 
     { 
      if (object.Equals(storage, value)) return false; 

      storage = value; 
      this.OnPropertyChanged(propertyName); 
      return true; 
     } 

     protected void OnPropertyChanged(/*[CallerMemberName]*/ string propertyName = null) 
     { 
      var eventHandler = this.PropertyChanged; 
      if (eventHandler != null) 
      { 
       eventHandler(this, new PropertyChangedEventArgs(propertyName)); 
      } 
     } 
    } 
} 
+0

Вы просто называете OnPropertyChanged. Если вы не передадите параметр, он обновит все. Вы можете просто сделать это в обработчике событий для BackgroundWorker ReportPsrogress. – Paparazzi

+0

Используйте объект таймера - http://msdn.microsoft.com/en-us/library/system.timers.timer(v=vs.110).aspx. –

+0

Таймер + Диспетчер (для вызова потока пользовательского интерфейса) ... или DispatcherTimer http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.dispatchertimer – Olivier

ответ

1

определенно лучший подход был бы не освежить контроль на всех :-) Как я вижу, что вы реализовали интерфейс INotifyPropertyChanged вам не слишком далеки от реализации простого шаблона MVVM. Если вы это сделаете, пользовательский интерфейс автоматически обновит события из модели просмотра, и ваши средства управления должны быть в курсе последних событий.

Это один из многих ссылок о том, как начать работу на MVVM: http://www.markwithall.com/programming/2013/03/01/worlds-simplest-csharp-wpf-mvvm-example.html

Я только что прошел через то же jurney себя, и как только я получил повесить его, я понял, как чистый и красивый это все.

В некоторых случаях вы должны вручную вызвать OnPropertyChanged, если, например, свойство выводится из других членов или внешних факторов. Затем вы просто вызываете OnPropertyChanged («PropertyName»).

+0

нормально понять, в моем случае модель представления берёт данные из XML-файла, я хотел бы знать, как обновить модель представления в определенное время? не могли бы вы мне помочь? – GibboK

+1

Что вызывает необходимость обновления? меняется ли содержимое файла? Есть ли новый файл? пользователь нажимает кнопку? или что-то другое? – Snorre

+0

У меня есть xml с данными с сервера с помощью http. Когда данные в файле xml меняются, мне нужно обновить ui. Мне нужно проверить изменения xml каждые 5 минут. – GibboK

Смежные вопросы