Пример #1
0
        public async ValueTask LoadTags()
        {
            try
            {
                if (Interlocked.Increment(ref _loading) != 1)
                {
                    return;
                }
                if (_loaded)
                {
                    return;
                }
                var tags = await Model.ListTags(_query.QueryString, _query.TypeId, _query.Offset, _query.Limit);

                if (tags != null && tags.Count > 0)
                {
                    _query.Offset += _query.Limit;
                    foreach (var tag in tags.Where(it => SelectedTags.All(tag => tag.ObjectId != it.ObjectId)))
                    {
                        var displayTag = new DisplayTag(tag);
                        displayTag.ClickCommand = new AsyncCommand(async() =>
                        {
                            if (SelectedTags.All(it => it.ObjectId != displayTag.ObjectId))
                            {
                                displayTag.ClickCommand = new AsyncCommand(async() =>
                                {
                                    SelectedTags.Remove(displayTag);
                                });
                                SelectedTags.Add(displayTag);
                            }
                        });
                        SearchResult.Add(displayTag);
                    }
                }
                else
                {
                    _loaded = true;
                }
            }
            finally
            {
                Interlocked.Decrement(ref _loading);
            }
        }
Пример #2
0
 public TagSelectionViewModel(long typeId, List <Tag> selectedTags)
 {
     _query = new TagQueryHelper()
     {
         Limit       = 100,
         Offset      = 0,
         QueryString = null,
         TypeId      = typeId
     };
     SelectedTags = new ObservableCollection <DisplayTag>();
     if (selectedTags == null)
     {
         return;
     }
     foreach (var selectedTag in selectedTags)
     {
         var displayTag = new DisplayTag(selectedTag);
         displayTag.ClickCommand = new AsyncCommand(async() =>
         {
             SelectedTags.Remove(displayTag);
         });
         SelectedTags.Add(displayTag);
     }
 }