这部分主要讲讲UI的事情。UI的实现比较灵活,只要让用户比较轻松的完成Appointment,Task的添加,删除,修改,转化即可,我列举一些应有的功能供大家参考

  1. Appointment的添加,删除,修改,显示(alpha)
  2. Task的添加,删除,修改,显示(alpha)
  3. Task和Appointment的相互转化(beta)
  4. Summary(alpha)
  5. Tag的添加(alpha)
  6. Sync(alpha)
  7. 分享与被分享,订阅公共源(beta)

UI主要是和Logic部分进行交互,当UI检测到某些更改时,调用相应的函数,FocusLifer中是通过如下方法实现的

        public DateTime DueDate        
   {            
    get { return task.DueDate; }            
    set             
    {                
      if (! task.DueDate.Equals(value))                
      {                    
        TaskPanel.MyLogicControl.EditTask(task.ID, value, task.Priority, task.Title, task.Description); 
          this.OnPropertyChanged("DueDate");                
      }            
    }        
    }

Logic部分需要Update UI,例如Task部分的改动可能会使得Appointment panel的显示有所改变,这个主要通过Logic里面的event EventHandler<EventArgs> OnUIUpdate实现,一个例子如下

// In Logic

public void EditTask(...)
{...
  OnUIUpdate.Invoke(null, null); 
...} 

// In Initializer
logicControl.OnUIUpdate += appointmentPanel_OnUIUpdate_Handler; 

// In appointmentPanel_OnUIUpdate_Handler
this.Dispatcher.BeginInvoke(new ThreadStart( delegate(){ appointmentPanel_OnUIUpdate(); } )); 

// In appointmentPanel_OnUIUpdate
calendar.Paint();....//做具体的update的UI的一些事情

可能出现这样update的UI需要实现像Paint这样的重绘函数

个人感觉UI之间的交互这么绕了一圈有点麻烦,不过估计可能会少一下bug,当初唐神他们这么选择应该也是有理由的。。听听大家的意见吧。 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-10-08
  • 2021-11-11
  • 2021-04-04
  • 2022-12-23
  • 2022-12-23
  • 2021-10-01
猜你喜欢
  • 2021-05-13
  • 2021-09-26
  • 2022-12-23
  • 2022-12-23
  • 2021-11-19
  • 2022-01-07
  • 2021-08-04
相关资源
相似解决方案