CalendarView SelectedDates不会记录在我的_DateChanged方法中

时间:2018-02-13 19:25:51

标签: c# xaml uwp calendar calendarview

...但是当我按下按钮时执行操作时。

这不起作用:

XAML:

            <CalendarView CalendarViewDayItemChanging="MyCalendarView_DateChanged" x:Name="MyCalendarView" Grid.RowSpan="2" Grid.Row="1" Grid.Column="1" DisplayMode="Month" SelectionMode="Multiple" CalendarItemBackground="LightBlue" BorderBrush="Orange" BorderThickness="3" HorizontalAlignment="Center" VerticalAlignment="Center" />

C#:

private void MyCalendarView_DateChanged(Object sender, object e)
    {
        SelectedDate.Text = "The selected date(s):" + "\n";
        for (int i = 0; i <= MyCalendarView.SelectedDates.Count - 1; i++)
        {
            SelectedDate.Text += MyCalendarView.SelectedDates[i].ToString() + "\n";
        }


    }

但这确实有效:

XAML:

            <Button x:Name="GoButton" Click="GoButton_Click" Content="Go!" Grid.Row="0" Grid.Column="1" HorizontalAlignment="Right"   VerticalAlignment="Top"/>

C#:

private void GoButton_Click(object sender, RoutedEventArgs e)
    {
        SelectedDate.Text = "The selected date(s):" + "\n";
        for (int i = 0; i <= MyCalendarView.SelectedDates.Count - 1; i++)
        {
            SelectedDate.Text += MyCalendarView.SelectedDates[i].ToString() + "\n";
        }
    }

第一种方法有什么问题? SelectedDates不应该自动刷新吗?

我宁愿避免使用按钮记录用户的日期选择。

修改

如果在第一种方法中我使用RoutedEventArgs而不是Object,我会收到错误:

  

严重级代码描述项目文件行抑制状态   错误CS0123“MyCalendarView_DateChanged”没有重载与委托“TypedEventHandler”匹配

1 个答案:

答案 0 :(得分:0)

如果要监视Calendar View控件SelectedDates集合依赖项属性,则应该处理SelectedDatesChanged事件。

您已将SelectionMode属性正确更改为Multiple,允许选择多个日期。为了跟踪所选日期的任何更新,您将在SelectedDatesChanged事件的事件处理程序上提供您的逻辑,而不是CalendarViewDayItemChanging,用于访问单个日期项目和实例改变了它的一些属性。