Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 显示约会显示UWP CalendarViewDayItem_C#_Xaml_Calendar_Uwp - Fatal编程技术网

C# 显示约会显示UWP 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

我想做的是在CalendarView的CalendarViewDayItem中显示与日期相关的约会

我的任命类别:

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);
    }
}