Пользовательские объекты в пользовательском списке WPF
У меня есть модель просмотра под названием Календарь.
в Календаре есть список объектов CalendarDaySquare. Они отображаются в ItemsControl, который является единой сеткой (из ItemsPanelTemplate).
В каждом из этих calendarDaySquares я хочу заполнить его коллекцией событий (объектов CalEvent)
public Class Calendar
{
// this is just a list that inherits from List<T>
public CalendarSquareList<CalendarDaySquare> Squares { get; private set; }
}
public class CalendarDaySquare
{
public List<CalEvent> Events {get; private set;}
public ObservableCollection<string> ObsColEvents{get; private set;}
}
Это то же самое, я только что попытался использовать ObservableCollection, потому что я был поставлен в тупик.
Вот мой xaml:
<ItemsControl ItemsSource="{Binding Squares}"
Margin="0,0,0,263">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="7" Rows="5"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="Control.Margin" Value="1"/>
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ListBox ItemsSource="{Binding}" Margin="5">
<ListBox.ItemTemplate>
<DataTemplate xmlns:local="clr-namespace:BudgetCalendarWPF.ViewModel;assembly=BudgetCalendarWPF" DataType="CalendarDaySquare">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<!--</Button>
</ControlTemplate>
</Button.Template>
</Button>-->
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Я надеюсь, что я вставил последние (я работал над этим весь день, так что это именно то, что я получил в VS в настоящее время.. печальное лицо)
1 ответ
Уэлп, я думаю, что у меня все получилось, но я бы с удовольствием посоветовался.
Я старался изо всех сил. Я не знал, что это автоматически поднимет предмет, как это было. так что это сработало:
<ListBox ItemsSource="{Binding Events}">
<ListBox.ItemTemplate>
<DataTemplate >
<Button HorizontalAlignment="Stretch">
<TextBlock Text="{Binding Name}"/>
</Button>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>