У меня есть представление с viewmodel, поскольку это DataContext. В ViewModel У меня есть ObservableCollection объектов:Binding ItemsSource для ObservableCollection в классе обертки
AvailableCategories = new ObservableCollection<Category>();
Я могу связать ListView к этому ObservableCollection без каких-либо проблем, как это:
ItemsSource="{Binding Path=AvailableCategories}"
теперь у меня есть требование, чтобы обернуть ObservableCollection в классе (для помощи в XML-сериализации, как здесь: How to rename XML attribute that generated after serializing List of objects)
класс обертка выглядит следующим образом:
public class CategoryList : ObservableObject
{
private ObservableCollection<Category> _categories;
public ObservableCollection<Category> Categories
{
get
{
return _categories;
}
set
{
if (_categories == value)
{
return;
}
_categories = value;
RaisePropertyChanged(()=>Categories);
}
}
}
и она будет создана в VM, как это:
CategoryList cl = new CategoryList();
cl.Categories = new ObservableCollection<Category>();
Как я теперь привязать к коллекции внутри класса-оболочки в моей виртуальной машине? Это, похоже, не работает:
ItemsSource="{Binding cl.Categories}"
; EDIT: My VM Теперь выставляет CategoryList так:
private CategoryList _cl;
public CategoryList cl
{
get
{
return _cl;
}
set
{
if (value==_cl)
{
return;
}
_cl = value;
RaisePropertyChanged(()=>cl);
}
}
Но до сих пор нет радости.
Ваша модель просмотра должна показывать свойство типа CategoryList, например. 'public CategoryList CategoryList {get; } '. Затем вы привязываетесь к 'CategoryList.Categories'. – Clemens
Посмотрите на ** Выходное окно ** для подсказок. Похоже, что контекст данных не может быть установлен или неверен. –
Если я не переношу класс и не использую коллекцию напрямую, он отлично работает, поэтому я думал, что это может быть связано с синтаксисом XAML. Окно вывода не вызывает ничего подозрительного. – jidl