эй. Я пытаюсь сохранить модель MVVM, но где-то отключаюсь при попытке привязки к списку. При первом запуске приложения я установил ItemCatalog
(ObservableCollection) как определенный список ObservableCollection. Список пуст, но если я попробую еще раз, это сработает. Однако существует разрыв между источником данных и отображаемыми данными. Например,
Я загружаю приложение -> установить источник на X
-> Список пусто
Теперь я установил источник на Y
-> Отображение списка X
Я установил источник на Z
-> Отображение списка Y
и т. Д.
Для меня это означает, что привязка работает, но я не могу понять, почему она отстает на единицу.
Мой XAML выглядит так:
<ListBox ItemsSource="{Binding ItemCatalog}">
<DataTemplate>
<StackPanel Margin="0,0,0,17" Width="432">
<TextBlock Text="{Binding Ref}" TextWrapping="Wrap" Foreground="Black" />
<TextBlock Text="{Binding ItemName}" TextWrapping="Wrap" Margin="12,-6,12,0" Foreground="Black" />
</StackPanel>
</DataTemplate>
</ListBox>
В ViewModel значение ItemCatalog
зависит от того, какую кнопку нажал пользователь (X
, Y
, Z
), и все они хранятся в статической переменной. Существует ли причина задержки или способ принудительного повторного привязки к последнему значению ItemCatalog
?
Если я удаляю привязку из XAML и устанавливаю источник списка прямо из кода, он работает отлично. Однако я хочу попытаться сохранить кодировку XAML. Я новичок в MVVM, поэтому я могу поступать неправильно. спасибо
РЕДАКТИРОВАТЬ - дополнительный код
Код изменяется в методе OnNavigatedTo
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
if (NavigationContext.QueryString["Category"].ToString() == "House")
{
_categoryType = Models.House;
}
if (NavigationContext.QueryString["Category"].ToString() == "Car")
{
_categoryType = Models.Car;
}
MyViewModel.LoadNewData(_categoryType);
base.OnNavigatedTo(e);
}
LoadNewData
метод просто устанавливает статическую переменную на основе переданного параметра.
ItemCatalog = App.CarCatalog;
По сути, мне нужно выполнить повторную привязку после загрузки страницы через XAML.