我已经构建了一个自定义日历控件(如Google日历和Outlook日历)
我想添加处理事件的功能(添加,删除等)。我已经拥有它,但我希望它尽可能地通用。
我的代码目前的样子:
myCalendar.Events.Add(myEvent);
myCalendar.Draw //this adds all the events to the calendar
我认为看起来更通用的例子:
myCalendar.Events.Add(myEvent);
myCalendar.Events.Remove(unwantedEvent);
myCalendar.Events.Draw
我的问题。第二个代码段是最佳做法,还是应该使用单独的类来处理绘图等。 (我现在有)
如果第二个片段更好, 我该怎么做?
我尝试过的其中一种方法的粗略示例(让您了解我想要完成的工作)
public _Events Events = new _Events();
public class _Events
{
public List<Event> Events = new List<Event>();
void Add(...)
{
//Add event to Events
}
void Clear()
{
...
}
}
public class Event
{
public String Title { get; set; }
}
上面代码的问题是我希望能够像这样返回一个默认值......
listOfEvents = myCalendar.Events
免责声明:我试图找到解决方案是徒劳的,但无法找到合适的关键字来找到它
答案 0 :(得分:1)
我不确定如何处理你的代码片段,因此我提取了一些代码,用于存储渲染到视图的自定义对象。您可以使用类中的代码来处理使用访问器时数据的返回方式。
using System.ComponentModel;
public abstract class DiagramObject : INotifyPropertyChanged
{
//the actual variable
private string _name;
//how the variable is accessed and set
public string Name
{
get { return _name; }
set
{
_name = value;
OnPropertyChanged("Name");
}
}
//
public string AbbreviatedName
{
get
{
if (_name.Length>=1)
{
return _name.Substring(0, 1);
}
else
{
return "NA";
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}
然后通过创建可观察的集合并初始化,可以使用它们进行显示。如果您使用的是WPF,则可以将其绑定到列表框。
using System.Collections.ObjectModel;
private ObservableCollection<DiagramObject> _objects;
public ObservableCollection<DiagramObject> Objects
{
get { return _nodes ?? (_nodes = new ObservableCollection<Node>()); }
}
public MainClass
{
_objects = new ObservableCollection<DiagramObject>(constructor that makes the objects);
}
我从https://github.com/High-Core/WPFSamples/tree/master/src/WPFSamples/Samples为我的项目提取了大量代码。这是由制作它的人添加的,并且有很多非常有趣的工作。