Я пытаюсь получить привязку данных, мне нужно работать с ListBox. Я проанализировал некоторые данные из текстового файла до ObservableCollection<ViewModel>
, но данные не обновляются в ListBox.C# wpf listbox не обновляется с ObservableCollection
Вот некоторая информация:
Данные, которые записываются в от парсера:
class MainData
{
private static ObservableCollection<GroupViewModel> groupModelList = new ObservableCollection<GroupViewModel>();
public static ObservableCollection<GroupViewModel> GroupModelList
{
get { return groupModelList; }
}
}
Что GroupViewModel
держит (не все, но это все равно):
class GroupViewModel : INotifyPropertyChanged
{
private GroupModel groupModel;
public event PropertyChangedEventHandler PropertyChanged;
public GroupViewModel()
{
groupModel = new GroupModel();
}
public string Name
{
get { return groupModel.name; }
set
{
if (groupModel.name != value)
{
groupModel.name = value;
InvokePropertyChanged("Name");
}
}
}
...
}
И что GroupModel
Помещения:
class GroupModel
{
public string name { get; set; }
}
Это как анализатор добавляет новые элементы к GroupModelView
:
if (split[0] == "group")
{
currentGroup = new GroupViewModel();
currentGroup.Name = split[1];
MainData.GroupModelList.Add(currentGroup);
}
Я создал ListBox в моем WPF приложения с этими опциями XAML:
<Window x:Class="SoundManager.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:SoundManager.ViewModels"
xmlns:vm2="clr-namespace:SoundManager.Code"
Title="MainWindow" Height="720" Width="1280">
<Window.Resources>
<vm:MainViewModel x:Key="MainViewModel" />
<vm2:MainData x:Key="MainData" />
</Window.Resources>
<ListBox Grid.Row="2" Height="484" HorizontalAlignment="Left" Margin="12,0,0,0" Name="lbFoundItems" VerticalAlignment="Top" Width="201" ItemsSource="{Binding Source={StaticResource MainData}, Path=GroupModelList/Name}" />
, но по какой-то причине ISN данных Обновление в пользовательском интерфейсе (в пользовательском интерфейсе явно не отображаются новые элементы).
Я только начинал с шаблона MVVM и привязки данных, и я не могу понять, что я делаю неправильно.
Заранее благодарен!
Спасибо! Это решило проблему! Итак, как продолжение. Действительно ли я делаю это MVVM правильно? (Судя по тому, что вы можете видеть в вопросе) – Dries
Если вы сделаете MainData свойством в MainViewModel, как было предложено в ответе, я бы сказал «да». – Clemens
Хорошо! Хорошо знать. еще раз спасибо – Dries