C# 显示约会显示UWP CalendarViewDayItem
我想做的是在CalendarView的CalendarViewDayItem中显示与日期相关的约会 我的任命类别:C# 显示约会显示UWP CalendarViewDayItem,c#,xaml,calendar,uwp,C#,Xaml,Calendar,Uwp,我想做的是在CalendarView的CalendarViewDayItem中显示与日期相关的约会 我的任命类别: public class CalJobItemVM : ViewModelBase { public CalJobItemVM() { } public CalJobItemVM(ServiceJob serviceJob) { Title = serviceJob.EON Date = serviceJob.StartDat
public class CalJobItemVM : ViewModelBase
{
public CalJobItemVM() { }
public CalJobItemVM(ServiceJob serviceJob)
{
Title = serviceJob.EON
Date = serviceJob.StartDate
}
private string _title;
public string Title
{
get { return _title; }
set { Set(ref _title, value); }
}
private DateTimeOffset _date;
public DateTimeOffset Date
{
get { return _date; }
set { Set(ref _date, value); }
}
}
在我的Page.Resources中,我有以下结构:
<Style TargetType="CalendarViewDayItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="CalendarViewDayItem">
<ListView>
<ListView.ItemTemplate>
<DataTemplate>
<Grid Height="26" HorizontalAlignment="Stretch">
<TextBlock Text="{Binding Title}"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
理论上,我希望将列表绑定到CalendarView的ItemsSource,并且根据日期的不同,应将约会选择添加到CalendarViewDayItem的ItemsSource。遗憾的是,我没有找到这样做的理由。绑定结构应如下所示:
CalendarView (ItemsSource = List<CalJobItemVM>())
|-> CalendarViewDayItem (ItemsSource = CalendarView.ItemsSource.Where(x=>x.Date == CalendarViewDayItem.Date)
|-> ListView (ItemsSource = CalendarViewDayItem.ItemsSource)
日历视图(ItemsSource=List())
|->CalendarViewDayItem(ItemsSource=CalendarView.ItemsSource.Where(x=>x.Date==CalendarViewDayItem.Date)
|->ListView(ItemsSource=CalendarViewDayItem.ItemsSource)
或:
日历视图(ItemsSource=List())
|->ListView(ItemsSource=CalendarView.ItemsSource.Where(x=>x.Date==ParentControl.Date)
或者覆盖ListView的ItemsSource,它过滤返回的CalJobItemMV集合,该集合由其父控件(CalendarViewDayItem)的日期值过滤
我知道CalendarView和CalendarViewDayItem没有ItemsSource,所以我也希望得到一个建议,如何以支持ItemsSource的方式修改这两个控件 另外,对于我的问题,任何替代方法(不使用代码隐藏)都是非常受欢迎的。请查看。此示例允许您使用该方法向每天添加彩色条。这可能更适合于小型日历视图 如果必须有项目列表,可以执行以下操作:
<CalendarView CalendarViewDayItemChanging="OnCalendarViewDayItemChanging"
HorizontalDayItemAlignment="Right" VerticalDayItemAlignment="Top">
<CalendarView.CalendarViewDayItemStyle>
<Style TargetType="CalendarViewDayItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="CalendarViewDayItem">
<Grid Margin="0,40,0,0">
<ListView ItemsSource="{Binding}">
<ListView.ItemTemplate>
<DataTemplate>
<Grid Height="26" HorizontalAlignment="Stretch">
<TextBlock Text="{Binding Title}"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</CalendarView.CalendarViewDayItemStyle>
</CalendarView>
“因此,我也希望得到一个建议,如何以支持ItemsSource的方式修改这两个控件”。那么,您的意思是要自定义控件吗?我更希望它只使用样式,但如果没有其他解决方案,我也会使用CustomControl。谢谢,我将很快进行测试。
<CalendarView CalendarViewDayItemChanging="OnCalendarViewDayItemChanging"
HorizontalDayItemAlignment="Right" VerticalDayItemAlignment="Top">
<CalendarView.CalendarViewDayItemStyle>
<Style TargetType="CalendarViewDayItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="CalendarViewDayItem">
<Grid Margin="0,40,0,0">
<ListView ItemsSource="{Binding}">
<ListView.ItemTemplate>
<DataTemplate>
<Grid Height="26" HorizontalAlignment="Stretch">
<TextBlock Text="{Binding Title}"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</CalendarView.CalendarViewDayItemStyle>
</CalendarView>
private void OnCalendarViewDayItemChanging(CalendarView sender, CalendarViewDayItemChangingEventArgs args)
{
// Render basic day items.
if (args.Phase == 0)
{
// Register callback for next phase.
args.Item.DataContext = GetCalJobItemVM(args.Item.Date);
}
}