Привязка WPF не работает при использовании другой модели данных ⇐ C#
-
Гость
Привязка WPF не работает при использовании другой модели данных
Я создаю приложение, которое отслеживает несколько серверов трассировки на удаленных компьютерах и отображает обработанные данные в пользовательском интерфейсе. Когда я использую симулятор, генерирующий данные, все работает так, как ожидалось. Проблема в том, что пользовательский интерфейс не обновляется при использовании фактической модели данных. Иногда он обновляется один раз после запуска, иногда никогда. ViewModel нетронута, данные правильно обработаны и доступны. Это влияет на все элементы управления, использующие привязку в XAML. Другие элементы управления, которые обновляются в коде, работают должным образом. Все модели представления правильно реализуют INotifyPropertyChanged.
См. следующий пример:
Пользовательский элемент управления TimeStrip
В этом элементе управления TimeStrip текстовое поле и строка должны перемещаться вправо со временем.
//.. //... Серые прямоугольники (TimeSlot) обновляются с помощью Grid_LayoutUpdated, который устанавливает градиент фона в соответствии с текущим временем:
private void Grid_LayoutUpdated (отправитель объекта, EventArgs e) { Контекст MainViewModel = DataContext как MainViewModel; context.UiStuff.GridWidth = TimeCanvas.ActualWidth; DateTime dt = context.UiStuff.CurrentTime; int currentHour = dt.AddHours(-6).Hour; двойной currentHourPart = dt.Minute / 60d; for (int i = 0; i
Я создаю приложение, которое отслеживает несколько серверов трассировки на удаленных компьютерах и отображает обработанные данные в пользовательском интерфейсе. Когда я использую симулятор, генерирующий данные, все работает так, как ожидалось. Проблема в том, что пользовательский интерфейс не обновляется при использовании фактической модели данных. Иногда он обновляется один раз после запуска, иногда никогда. ViewModel нетронута, данные правильно обработаны и доступны. Это влияет на все элементы управления, использующие привязку в XAML. Другие элементы управления, которые обновляются в коде, работают должным образом. Все модели представления правильно реализуют INotifyPropertyChanged.
См. следующий пример:
Пользовательский элемент управления TimeStrip
В этом элементе управления TimeStrip текстовое поле и строка должны перемещаться вправо со временем.
//.. //... Серые прямоугольники (TimeSlot) обновляются с помощью Grid_LayoutUpdated, который устанавливает градиент фона в соответствии с текущим временем:
private void Grid_LayoutUpdated (отправитель объекта, EventArgs e) { Контекст MainViewModel = DataContext как MainViewModel; context.UiStuff.GridWidth = TimeCanvas.ActualWidth; DateTime dt = context.UiStuff.CurrentTime; int currentHour = dt.AddHours(-6).Hour; двойной currentHourPart = dt.Minute / 60d; for (int i = 0; i
Мобильная версия