Данные приходят к просмотру в конце, а не шаг за шагом;Как использовать Dispatcher для переключения между потоком пользовательского интерфейса и потоком рендеринга? - PullRequest
0 голосов
/ 11 апреля 2019

Я пытаюсь построить строку состояния, используя текстовое поле с использованием WPF и MVVM, статус приходит, но в какой-то момент в конце я хочу, чтобы он шел шаг за шагом.

Я пробовал этот код. Я также попытался дать Thread.Sleep(200); в коде, но никаких существенных изменений не было замечено. Создание свойства для статуса в viewModel

private string myStatus;
public string MyStatus  
{
  get { return myStatus; }
  set
  {
    myStatus = value;
    NotifyPropertyChanged("MyStatus");
  }
}

и его инициализация

public void LoadData()
{
  MyStatus = "";
  for(int i=0;i<list.Count();i++)
  {
    switch(list.ElementAt(i))
    {
      case -1:
       MyStatus = "Negative value\n";
       //Thread.Sleep(200);
       break;
      case 0: 
       MyStatus = "value is zero\n";
       //Thread.Sleep(200);break;
      case 1:
       MyStatus = "Positive value\n";
       //Thread.Sleep(200);
       break;
    }
  }
}

и в представлении связывает его со свойством

<TextBox IsReadOnly="True" VerticalScrollBarVisibility="Visible"  Name="tbMultiline" Text="{Binding MyStatus}" />

Текстовое поле заполняется, но в конце я хочу, чтобы это происходило во время каждой итерации цикла. Пользовательский интерфейс останавливается на некоторое время и возобновляется после завершения кода бэкэнда. Я искал об этом, я узнал о диспетчере, может кто-нибудь сказать мне, как использовать диспетчер в шаблоне MVVM для переключения между потоком пользовательского интерфейса и потоком рендеринга.

1 Ответ

0 голосов
/ 11 апреля 2019

Я надеюсь, что я правильно понимаю вашу проблему. Вы должны изменить свой код стороны xaml с этим;

<TextBox IsReadOnly="True" VerticalScrollBarVisibility="Visible"  Name="tbMultiline" Text="{Binding MyStatus, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...