Пример #1
0
        //protected override void OnItemCreated(Entity entity)
        //{
        //    base.OnItemCreated(entity);

        //    var log = entity as FinanceLog;
        //    log.Date = DateTime.Today;
        //}

        protected override void OnUIGenerated(ControlResult ui)
        {
            var defaultPersons = RF.Find <Person>().GetAll().Cast <Person>()
                                 .Where(t => t.IsDefault).Select(t => t.Name).ToArray();
            var defaultTags = RF.Find <Tag>().GetAll().Cast <Tag>()
                              .Where(t => !t.NotUsed && t.IsDefault).Select(t => t.Name).ToArray();
            var log = new FinanceLog
            {
                Users = string.Join(",", defaultPersons),
                Tags  = string.Join(",", defaultTags)
            };

            var main = ui.MainView as DetailLogicalView;

            main.Current         = log;
            main.Control.Loaded += (s, e) => (main.PropertyEditors[0].Control as FrameworkElement).Focus();

            //暂时通过以下方式为按钮添加键盘事件。
            main.Control.KeyDown += (s, e) =>
            {
                if (Keyboard.Modifiers == ModifierKeys.Control && e.Key == Key.Enter)
                {
                    //移除焦点,提交更改
                    var element = Keyboard.FocusedElement as FrameworkElement;
                    if (element != null)
                    {
                        element.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
                    }

                    main.Commands[typeof(ContinueAddFinanceLog)].TryExecute();
                }
            };

            var listView = main.Relations["list"] as ListLogicalView;

            listView.DataLoader.LoadDataAsync();
            listView.IsReadOnly = ReadOnlyStatus.ReadOnly;

            base.OnUIGenerated(ui);
        }
Пример #2
0
        /// <summary>
        /// 在异步队列中,把手动输入的 Tag、Person 添加到数据库中。
        /// </summary>
        /// <param name="log"></param>
        private static void SyncBasicData(FinanceLog log)
        {
            var userArray = log.Users.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
            var tagArray  = log.Tags.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);

            AsyncHelper.InvokeSafe(() =>
            {
                var userRepo = RF.Concrete <PersonRepository>();
                var users    = userRepo.CacheAll().Concrete();
                foreach (var userName in userArray)
                {
                    var user = users.FirstOrDefault(u => u.Name == userName);
                    if (user == null)
                    {
                        user = new Person
                        {
                            Name = userName
                        };
                        userRepo.Save(user);
                    }
                }

                var tagRepo = RF.Concrete <TagRepository>();
                var tags    = tagRepo.CacheAll().Concrete();
                foreach (var tagName in tagArray)
                {
                    var tag = tags.FirstOrDefault(u => u.Name == tagName);
                    if (tag == null)
                    {
                        tag = new Tag
                        {
                            Name = tagName
                        };
                        userRepo.Save(tag);
                    }
                }
            });
        }
Пример #3
0
 public int IndexOf(FinanceLog entity)
 {
     return base.IndexOf(entity);
 }
Пример #4
0
 public bool Contains(FinanceLog entity)
 {
     return base.Contains(entity);
 }
Пример #5
0
 public void Add(FinanceLog entity)
 {
     base.Add(entity);
 }
Пример #6
0
 public bool Remove(FinanceLog entity)
 {
     return base.Remove(entity);
 }
Пример #7
0
 public void Insert(int index, FinanceLog entity)
 {
     base.Insert(index, entity);
 }