Я пытаюсь создать представление, имеющее список расширителей, и я хочу, когда я нажимаю, чтобы развернуть один из них список имен из другого источника, который будет загружен , Пока что я получаю, когда я устанавливаю источник элемента в LineRouteCollection, чтобы установить заголовок расширителя, хотя я привязываю экспандер к отображению имен из AllStopsCollection, что привязка «Имя» показывает имена из источника LineRouteCollection, а не имена из AllStopsCollection, как я хочу. Можете ли вы взглянуть на мой код и рассказать мне, что я делаю неправильно?Catel MVVM Как установить два разных источника элемента в пределах одного ListBox
<ListBox>
<ItemsControl ItemsSource="{Binding LineRouteCollection}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Expander Header="{Binding Name}" MinHeight="70">
<ListBox >
<ItemsControl ItemsSource ="{Binding AllStopsCollection}">
<TextBlock Text="{Binding Name}"></TextBlock>
</ItemsControl>
</ListBox>
</Expander>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ListBox>
EDIT:
В моей модели представления я загружаю наблюдаемые коллекции (AllStopsCollection & LineRouteCollection), как это:
private ObservableCollection<Route> AllLineRoutes;
private ObservableCollection<StopView> AllRouteStops;
//List of all Routes connected to the selected line
public ObservableCollection<Route> LineRouteCollection // Must be property or DP to be bound!
{
get { return AllLineRoutes; }
set
{
if (Equals(value, AllLineRoutes)) return;
AllLineRoutes = value;
}
}
//List of all stops
public ObservableCollection<StopView> AllStopsCollection // Must be property or DP to be bound!
{
get { return AllRouteStops; }
set
{
if (Equals(value, AllRouteStops)) return;
AllRouteStops = value;
}
}
И я заполняю коллекцию данных в конструктор класса , Я правильно загружаю данные и вижу это, но он просто не появится в текстовом поле после расширения расширителя.
Проблема в том, что вам нужно предоставить «ItemTemplate» вместо того, чтобы вставлять текстовое поле вместо «ItemsControl». У вас должна быть та же самая настройка, что и для первого 'ItemsControl' во внутреннем' ItemsControl' с элементом 'ItemsControl.ItemTemplate', содержащим текстовый блок, иначе область привязки для текстового блока является областью связывания первого' DataTemplate' – Charleh
Я обновил свой ответ - ваша проблема связана с областями привязки (я ожидал, что у вас будет иерархия данных модели, а не две плоские коллекции!) – Charleh