【发布时间】:2021-12-15 01:55:15
【问题描述】:
我按照本教程创建日历/时间表:https://www.codeproject.com/Articles/35490/Creating-the-Microsoft-Outlook-Appointment-View-in Listview 包含 5 个项目,来源
<ListView.Items>
<local:Termin Start="10/28/2021 6:00 AM" Finish="10/28/2021 4:00 PM" Subject="Meet with John" Location="Southwest Meeting Room" Organizer="Jim Smith" />
<local:Termin Start="10/29/2021 6:00 AM" Finish="10/29/2021 4:00 PM" Subject="Meet with Rick" Location="Southwest Meeting Room" Organizer="Jim Smith" />
<local:Termin Start="10/30/2021 6:00 AM" Finish="10/30/2021 6:00 PM" Subject="Meet with Dave" Location="Southwest Meeting Room" Organizer="Jim Smith" />
<local:Termin Start="10/31/2021 6:00 AM" Finish="10/31/2021 6:00 PM" Subject="Meet with Larry" Location="Southwest Meeting Room" Organizer="Jim Smith" />
<local:Termin Start="10/31/2021 6:00 AM" Finish="10/31/2021 6:00 PM" Subject="Meet with Jim" Location="Southwest Meeting Room" Organizer="Jim Smith" />
</ListView.Items>
现在,当我尝试用可观察的集合替换硬编码的项目时
<ListView ItemsSource="{Binding Termine}">
<ListView.View>
<controls:CalendarView ItemBeginBinding="{Binding Start}" ItemEndBinding="{Binding Finish}">
public class KalenderVM : BewohnerVM
{
public KalenderVM()
{
DateTime dateValue1;
DateTime dateValue2;
DateTime.TryParse("25.10.2021 6:00", out dateValue1);
DateTime.TryParse("25.10.2021 16:00", out dateValue2);
Termine.Add(new Termin(dateValue1, dateValue2, "Jan", "Anker"));
DateTime.TryParse("26.10.2021 6:00", out dateValue1);
DateTime.TryParse("26.10.2021 16:00", out dateValue2);
Termine.Add(new Termin(dateValue1, dateValue2, "Jan", "Anker"));
DateTime.TryParse("27.10.2021 6:00", out dateValue1);
DateTime.TryParse("27.10.2021 18:00", out dateValue2);
Termine.Add(new Termin(dateValue1, dateValue2, "Jan", "Frei"));
}
private ObservableCollection<Termin> _termine = new ObservableCollection<Termin>();
public ObservableCollection<Termin> Termine
{
get { return _termine; }
set { _termine = value; }
}
...
}
public partial class Kalender : UserControl
{
public Kalender()
{
InitializeComponent();
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IWHRManagment.Models
{
public class Termin
{
public Termin(DateTime start, DateTime finish, string orga, string sub)
{
Start = start;
Finish = finish;
Organizer = orga;
Subject = sub;
Location = "Home";
}
public Termin() { }
public DateTime Start { get; set; }
public DateTime Finish { get; set; }
public bool Recurring { get; set; }
public object Interval { get; set; }
public string Organizer { get; set; }
public string Subject { get; set; }
public string Location { get; set; }
}
}
ListView 包含 2 个项目(我为测试目的创建了 2 个),但没有显示任何项目,因为“在 ViewModel 中找不到”“开始”和“完成”......我尝试了一个静态资源,几个相对源但我仍然很难以正确的方式做到这一点。
有人可以帮助我并告诉我正确的方法吗?
【问题讨论】:
-
请发布您的代码隐藏(ViewModel、C# 代码),而不仅仅是标记。如果我们看不到 ViewModel,我们无法告诉您为什么 ViewModel 中缺少属性
-
添加了模型、代码隐藏和虚拟机。
-
controls:CalendarView来自哪里,在您的<ListView.View>中?您永远不会定义 CalendarView,但据说其中定义了名为ItemBeginBinding和ItemEndBinding的属性。另外,你的 DataContext 设置了吗?在这种情况下,您的构造函数中必须有类似DataContext = this的内容或类似的KalenderVM