Существует список ListView в котором должны отображаться элементы вида название / время, при этом все элементы должны быть сгруппированы по времени.
С выводом элементов проблем не возникло, но возникли проблемы с группировкой. В частности, при переходе на страницу заголовки группировки не отображаются, но после выбора одного из элемента - все заголовки становятся одинаковыми, а именно, во всех заголовках отображаются одни и те же даты. При выборе другого элемента, все заголовки соответственно меняются на дату выбранного элемента.
В чём может быть проблема? Привожу код с применением шаблона MVVM.
Модель:
public class MapEvent
{
private string name;
public string Name
{
get => name;
set => name = value;
}
private DateTime start;
public DateTime Start
{
get => start;
set => start = value;
}
}
ViewModel:
public class ScheduleViewModel
{
private CollectionViewSource sortedCollection;
public CollectionViewSource SortedCollection
{
get => sortedCollection;
set
{
sortedCollection = value;
OnPropertyChanged();
}
}
public ScheduleViewModel()
{
using (MainDatabaseContext db = new MainDatabaseContext())
{
MapEvents = new ObservableCollection<MapEvent>(db.MapEvents
.OrderBy(i => i.Start)
.ToList());
var groups = from i in MapEvents
group i by i.Start.ToLocalTime().Date;
SortedCollection.Source = groups;
}
}
}
View:
<Page.Resources>
<ResourceDictionary>
<CollectionViewSource
x:Key="cvs"
IsSourceGrouped="True"
Source="{x:Bind ViewModel.SortedCollection.Source, Mode=OneWay}" />
<converters:FromNullableIntToIntConverter x:Key="fromNullableIntToIntConverter" />
</ResourceDictionary>
</Page.Resources>
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<ListView
ItemsSource="{Binding Source={StaticResource cvs}, Mode=OneWay}"
SelectedIndex="{x:Bind ViewModel.SelectedMapEvent, Mode=TwoWay, Converter={StaticResource fromNullableIntToIntConverter}}"
<ListView.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<TextBlock
FontSize="30"
FontWeight="SemiLight"
Text="{Binding Source={StaticResource cvs}, Path=Start, Converter={StaticResource fromUtcToLocalTimeOnlyDateConverter}, Mode=OneWay}" />
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ListView.GroupStyle>
</Grid>
Стоит отметить, что при переходе на страницу, в консоли отладки выдаются сообщения: Error: BindingExpression path error: 'Start' property not found on 'Windows.UI.Xaml.Data.ICollectionView'. BindingExpression: Path='Start' DataItem='Windows.UI.Xaml.Data.ICollectionView'; target element is 'Windows.UI.Xaml.Controls.TextBlock' (Name='null'); target property is 'Text' (type 'String')
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
У меня создаются кнопки в окне cs приложения WPFЯ хочу взять одну из кнопок и заполнить ее одной буквой, но чтобы в правом верхнем еще был маленький...
Пытаюсь подключить CEFПри компиляции возникает вышеуказанная ошибка
Например: На c++ программа циклически считывает данные ожидая определенного событияКак только это событие произойдет должно высветиться...
У меня есть списокВ нем элементы вида: "_something":"",