无法从列表中获取日期并在 CalendarView 中以编程方式设置 SelectedDates
Unable to get Date from List and set SelectedDates programmaticaly in CalendarView
我有一个 Table 看起来像这样:
class Calendar
{
[SQLite.Net.Attributes.PrimaryKey, SQLite.Net.Attributes.AutoIncrement]
public int Id { get; set; }
public string PersonId { get; set; }
public string PlaceId { get; set; }
public string Date {get; set;}
public Calendar()
{
}
public Calendar(string personId, string placeId, string date)
{
PersonId = personId;
PlaceId = placeId;
Date = date;
}
}
我还有一个日历视图:
<CalendarView NumberOfWeeksInView="6" SelectedDatesChanged="MyCalendarView_DateChanged" x:Name="MyCalendarView" DisplayMode="Month" SelectionMode="Multiple"/>
我想做的是根据 Table 中的数据获取 CalendarView 标记 SelectedDates
。我希望它 select 对应于存储在 Calendar
Table 中的 Date
的日期。
比方说,我希望 CalendarView select 所有对应于 PersonId == "James" 和 PlaceId == "Tokyo".
的日期
这是我目前的情况:
private void VerifyButton_Click(object sender, RoutedEventArgs e)
{
ReadAllCalendarList dbcalendar = new ReadAllCalendarList();
DB_CalendarList = dbcalendar.GetAllCalendar();
var calendarQuery = DB_CalendarList.Where(
Calendar => Calendar.PersonId == PersonSelector.SelectedItem.ToString() &&
Calendar.PlaceId == SelectedPlaceName.Text.Trim());
(the ListView
below actually shows all records that match the query
above, so the query works)
LstViewCalendar.ItemsSource = (calendarQuery.OrderByDescending(i => i.Id).ToList());
现在,如果我把这段代码放在这里只是为了测试:
MyCalendarView.SelectedDates.Add(DateTimeOffset.Now);
IT WORKS. and the CalendarView selects the todays date.
所以我继续代码如下:
List<Calendar> calendarRecords = new List<Calendar>();
//something wrong with foreach below or List above
foreach (var date in calendarRecords)
{
MyCalendarView.SelectedDates.Add(DateTimeOffset.Parse(date.Date));
MyCalendarView.SelectedDates.Add(DateTimeOffset.Now);
}
}
和 NONE 上面 foreach
中的两个语句有效。
上面的列表没有排序,它列出了 table 中的所有记录。我正在以这种方式对其进行测试,但它不起作用。
此外,这是我将记录添加到 Calendar
Table:
的方法
for (int i = 0; i <= MyCalendarView.SelectedDates.Count - 1; i++)
{
Db_Helper.InsertCal(new Calendar(
Convert.ToString(PersonSelector.SelectedItem),
(SelectedPlaceName.Text.Trim()),
MyCalendarView.SelectedDates[i].ToString("dd-MM-yyyy")
));
}
有什么帮助吗?
基本上我放在 foreach
里面的任何东西都不起作用。我在遍历日历 class 记录时做错了但不知道是什么。
好的,我已经整理好了。
基本上,列表是空的。
我已将我的查询分配给这样的列表:
List<Calendar> calendarRecords = new List<Calendar>();
calendarRecords = calendarQuery.ToList();
和:
MyCalendarView.SelectedDates.Add((date.Date));
有效。
但是我必须做出另一个改变:
在 Calendar
class 中,我已将 string Date
更改为 DateTimeOffset Date
。
通过这种方式,我成功地使用我的 SQLite 数据库中包含的数据在 CalendarView 中以编程方式选择了日期。
我有一个 Table 看起来像这样:
class Calendar
{
[SQLite.Net.Attributes.PrimaryKey, SQLite.Net.Attributes.AutoIncrement]
public int Id { get; set; }
public string PersonId { get; set; }
public string PlaceId { get; set; }
public string Date {get; set;}
public Calendar()
{
}
public Calendar(string personId, string placeId, string date)
{
PersonId = personId;
PlaceId = placeId;
Date = date;
}
}
我还有一个日历视图:
<CalendarView NumberOfWeeksInView="6" SelectedDatesChanged="MyCalendarView_DateChanged" x:Name="MyCalendarView" DisplayMode="Month" SelectionMode="Multiple"/>
我想做的是根据 Table 中的数据获取 CalendarView 标记 SelectedDates
。我希望它 select 对应于存储在 Calendar
Table 中的 Date
的日期。
比方说,我希望 CalendarView select 所有对应于 PersonId == "James" 和 PlaceId == "Tokyo".
的日期这是我目前的情况:
private void VerifyButton_Click(object sender, RoutedEventArgs e)
{
ReadAllCalendarList dbcalendar = new ReadAllCalendarList();
DB_CalendarList = dbcalendar.GetAllCalendar();
var calendarQuery = DB_CalendarList.Where(
Calendar => Calendar.PersonId == PersonSelector.SelectedItem.ToString() &&
Calendar.PlaceId == SelectedPlaceName.Text.Trim());
(the
ListView
below actually shows all records that match the query above, so the query works)
LstViewCalendar.ItemsSource = (calendarQuery.OrderByDescending(i => i.Id).ToList());
现在,如果我把这段代码放在这里只是为了测试:
MyCalendarView.SelectedDates.Add(DateTimeOffset.Now);
IT WORKS. and the CalendarView selects the todays date.
所以我继续代码如下:
List<Calendar> calendarRecords = new List<Calendar>();
//something wrong with foreach below or List above
foreach (var date in calendarRecords)
{
MyCalendarView.SelectedDates.Add(DateTimeOffset.Parse(date.Date));
MyCalendarView.SelectedDates.Add(DateTimeOffset.Now);
}
}
和 NONE 上面 foreach
中的两个语句有效。
上面的列表没有排序,它列出了 table 中的所有记录。我正在以这种方式对其进行测试,但它不起作用。
此外,这是我将记录添加到 Calendar
Table:
for (int i = 0; i <= MyCalendarView.SelectedDates.Count - 1; i++)
{
Db_Helper.InsertCal(new Calendar(
Convert.ToString(PersonSelector.SelectedItem),
(SelectedPlaceName.Text.Trim()),
MyCalendarView.SelectedDates[i].ToString("dd-MM-yyyy")
));
}
有什么帮助吗?
基本上我放在 foreach
里面的任何东西都不起作用。我在遍历日历 class 记录时做错了但不知道是什么。
好的,我已经整理好了。
基本上,列表是空的。 我已将我的查询分配给这样的列表:
List<Calendar> calendarRecords = new List<Calendar>();
calendarRecords = calendarQuery.ToList();
和:
MyCalendarView.SelectedDates.Add((date.Date));
有效。
但是我必须做出另一个改变:
在 Calendar
class 中,我已将 string Date
更改为 DateTimeOffset Date
。
通过这种方式,我成功地使用我的 SQLite 数据库中包含的数据在 CalendarView 中以编程方式选择了日期。