列表的自定义类

时间:2015-12-31 02:36:15

标签: c# class methods

我已经构建了一个自定义日历控件(如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

免责声明:我试图找到解决方案是徒劳的,但无法找到合适的关键字来找到它

1 个答案:

答案 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为我的项目提取了大量代码。这是由制作它的人添加的,并且有很多非常有趣的工作。