У меня есть следующий DataTemplate для ListView, который использует StackPanel для своей ItemsPanelTemplate.
<DataTemplate x:Key="DayTemplate">
<Border BorderBrush="Black"
BorderThickness="2"
CornerRadius="5"
Width="150"
Height="440"
Background="White">
<StackPanel Orientation="Vertical">
<Border BorderBrush="Black"
BorderThickness="0 0 0 5"
Background="White">
<StackPanel>
<StackPanel.ContextMenu>
<ContextMenu>
<MenuItem Header="Add Session"
Command="{x:Static cmd:TimetableCommands.AddSession}"/>
</ContextMenu>
</StackPanel.ContextMenu>
<TextBlock FontWeight="Bold"
TextAlignment="Center"
Text="{Binding Path=DateInfo.Date, Mode=OneWay, Converter={StaticResource DateNoTime}}"/>
<TextBlock TextAlignment="Center"
FontWeight="Bold"
Text="{Binding Path=DateInfo.DayOfWeek}"/>
</StackPanel>
</Border>
<ListBox Name="lbSessions"
Background="Transparent"
HorizontalAlignment="Center"
Visibility="Visible"
ItemsSource="{Binding Source={StaticResource SessionList}}"
ItemTemplate="{StaticResource SessionTemplate}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
</StackPanel>
</Border>
</DataTemplate>
У меня также есть следующий источник сбора, который я хотел бы использовать для функции сортировки.Он находится в отдельной библиотеке ресурсов, на которую правильно ссылаются в библиотеке ресурсов, где определен шаблон данных.
<CollectionViewSource Source="{Binding Path=Sessions, Mode=OneWay}"
x:Key="SessionList">
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="StartTime"/>
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
При запуске данные не отображаются, а в окне вывода указывается, что источник коллекции пытается получитьданные для списка элементов на уровне окна DataContext, а не DataContext, который использует список (который находится на пару уровней ниже Window ViewModel).
Если я изменю строку
ItemsSource="{Binding Source={StaticResource SessionList}}"
до
ItemsSource="{Binding Path=Sessions}"
Работает нормально, хотя у меня больше нет функции сортировки источника сбора, которую я действительно хочу использовать, чтобы избежать необходимости писать собственный код сортировки.
Что происходит?и как я могу установить правильный DataContext в источнике коллекции.