private async Task HandleLocationTestingPictureClick(MemoryPictureItem memoryPictureItem)
 {
     ////如果选中的图片,超过限制,则直接返回
     //if (_selectedLocationTestingPictureList.Count >= TrainingStageSetting.ClickMaxLimit ||
     //    _selectedLocationTestingPictureList.Any(i => i == memoryPictureItem) ||
     //    _selectedLocationTestingPictureList.Any(i => i.IsHighlighted))
     //{
     //    return;
     //}
     //await SetMemoryPictureMarkedStatus(memoryPictureItem);
     ////添加序列
     //if (memoryPictureItem.IsHighlighted)
     //{
     //    if (_selectedLocationTestingPictureList.All(i => i != memoryPictureItem))
     //    {
     //        _selectedLocationTestingPictureList.Add(memoryPictureItem);
     //    }
     //}
     //else
     //{
     //    if (_selectedLocationTestingPictureList.Any(i => i == memoryPictureItem))
     //    {
     //        _selectedLocationTestingPictureList.Remove(memoryPictureItem);
     //    }
     //}
     //YesButton.IsEnabled = memoryPictureItem.IsHighlighted;
 }
        private void MemoryPictureList_OnPictureLocationComfirmed(object sender, LocationMemoryPictureItem item)
        {
            try
            {
                _selectedLocationTestingPictureList.Add(item);
                //提示结果
                var resultTipText = _memorizedPictureList.Any(i => i.PictureItem == item.PictureItem && i.Location == item.Location) ? "正确" : "错误";
                SetResultTip(resultTipText);

                if (sender is MemoryPictureListControl memoryPictureListControl &&
                    _selectedLocationTestingPictureList.Count >= memoryPictureListControl.TrainingStageSetting.ClickMaxLimit)
                {
                    TestingCompleted?.Invoke(this, EventArgs.Empty);
                }
                else
                {
                    var memorizedPictureList = _memorizedPictureList;
                    var random = new Random();
                    MemoryPictureItem visibileRandomPictureItem = null;
                    while (visibileRandomPictureItem == null)
                    {
                        var visibileRandomIndex = random.Next(memorizedPictureList.Count);
                        var randomPictureItem   = memorizedPictureList[visibileRandomIndex].PictureItem;
                        if (_selectedLocationTestingPictureList.All(i => i.PictureItem != randomPictureItem))
                        {
                            visibileRandomPictureItem = randomPictureItem;
                        }
                    }

                    visibileRandomPictureItem.IsPictureVisibile = true;
                }
            }
        public async Task SetMemoryPictureMarkedStatus(MemoryPictureItem item, int delayedMilliseconds = 500)
        {
            if (item.IsHighlighted)
            {
                item.IsPictureVisibile = false;
                await Task.Delay(TimeSpan.FromMilliseconds(delayedMilliseconds));

                item.IsHighlighted = false;
            }
            else
            {
                item.IsHighlighted = true;
                await Task.Delay(TimeSpan.FromMilliseconds(delayedMilliseconds));

                item.IsPictureVisibile = true;
            }
        }
        /// <summary>
        /// 学习时,处理图片的点击
        /// </summary>
        /// <param name="listBoxItem"></param>
        /// <param name="memoryPictureItem"></param>
        /// <returns></returns>
        private async Task HandleLearningPictureClick(ListBoxItem listBoxItem, MemoryPictureItem memoryPictureItem)
        {
            //禁用多图片翻开;同一图片,禁止再次翻开
            if (_memorizedPictureList.Count >= TrainingStageSetting.ClickMaxLimit ||
                _memorizedPictureList.Any(i => i.PictureItem == memoryPictureItem) ||
                MemoryPictureItems.Any(i => i != memoryPictureItem && i.IsHighlighted))
            {
                return;
            }

            var isPreviousPictureVisibile = memoryPictureItem.IsPictureVisibile;

            await SetMemoryPictureMarkedStatus(memoryPictureItem);

            //第一次翻开
            if (!isPreviousPictureVisibile && memoryPictureItem.IsPictureVisibile)
            {
                _testRecordInfo.LearningClickInfos.Add(new LearningClickInfo()
                {
                    ClickToVisibleTime = DateTime.Now,
                    PictureName        = Path.GetFileNameWithoutExtension(memoryPictureItem.ImageUri),
                    Location           = MemoryPictureItems.IndexOf(memoryPictureItem)
                });
            }
            else
            {
                var learningClickInfo = _testRecordInfo.LearningClickInfos.First(i => i.PictureName == memoryPictureItem.PictureName);
                learningClickInfo.ClickToCollapsedTime = DateTime.Now;
            }
            //如果由显示改为关闭,则说明已经记忆过此图片
            if (isPreviousPictureVisibile && !memoryPictureItem.IsPictureVisibile)
            {
                //添加到已记忆列表
                _memorizedPictureList.Add(new MemorizedMemoryPictureItem()
                {
                    PictureItem = memoryPictureItem,
                    Location    = MemoryPictureItems.IndexOf(memoryPictureItem)
                });
                //图片记忆完成
                if (_memorizedPictureList.Count >= TrainingStageSetting.ClickMaxLimit)
                {
                    PictureMemorized?.Invoke(this, _memorizedPictureList);
                }
            }
        }
        private void MemoryPictureList_OnPictureLocationComfirmed(object sender, LocationMemoryPictureItem checkedPictureItem)
        {
            try
            {
                //记录位置测试结果
                var memorizedPictureList       = GetLastThreeMemorizedPictures();
                var memorizedMemoryPictureItem = memorizedPictureList.First(i => i.PictureItem == checkedPictureItem.PictureItem);
                var isRightLocation            = checkedPictureItem.Location == memorizedMemoryPictureItem.Location;
                _currentTestRecordInfo.LocationTestingClickInfos.Add(new TestingClickInfo()
                {
                    PictureName = Path.GetFileNameWithoutExtension(memorizedMemoryPictureItem.PictureItem.ImageUri),
                    Location    = checkedPictureItem.Location,
                    IsMatchedByUserComfirmed = checkedPictureItem.IsMatchedByUserComfirmed,
                    IsRight = isRightLocation ? checkedPictureItem.IsMatchedByUserComfirmed : !checkedPictureItem.IsMatchedByUserComfirmed
                });

                _selectedLocationTestingPictureList.Add(checkedPictureItem);
                if (sender is MemoryPictureListControl memoryPictureListControl &&
                    _selectedLocationTestingPictureList.Count >= memoryPictureListControl.TrainingStageSetting.ClickMaxLimit)
                {
                    ////完成一轮测试
                    _selectedLocationTestingPictureList.Clear();
                    CompleteOneRoundTest();
                }
                else
                {
                    var random = new Random();
                    MemoryPictureItem visibileRandomPictureItem = null;
                    while (visibileRandomPictureItem == null)
                    {
                        //var visibileRandomIndex = random.Next(memorizedPictureList.Count);
                        var randomPictureItem = memorizedPictureList[_selectedLocationTestingPictureList.Count].PictureItem;
                        if (_selectedLocationTestingPictureList.All(i => i.PictureItem != randomPictureItem))
                        {
                            visibileRandomPictureItem = randomPictureItem;
                        }
                    }

                    visibileRandomPictureItem.IsPictureVisibile = true;
                }
            }
        private async Task HandleSequentialTestingPictureClick(MemoryPictureItem memoryPictureItem)
        {
            //如果选中的图片,超过限制,则直接返回
            if (_selectedSequentialPictureList.Count >= TrainingStageSetting.ClickMaxLimit &&
                _selectedSequentialPictureList.Any(i => i != memoryPictureItem) &&
                !memoryPictureItem.IsHighlighted)
            {
                return;
            }
            //设置高亮状态
            memoryPictureItem.IsHighlighted = !memoryPictureItem.IsHighlighted;
            //添加序列
            if (memoryPictureItem.IsHighlighted)
            {
                if (_selectedSequentialPictureList.All(i => i != memoryPictureItem))
                {
                    _selectedSequentialPictureList.Add(memoryPictureItem);
                    //记录顺序点击信息
                    _testRecordInfo.SequentialTestingClickInfos.Add(new TestingClickInfo()
                    {
                        PictureName = Path.GetFileNameWithoutExtension(memoryPictureItem.ImageUri),
                        Location    = MemoryPictureItems.IndexOf(memoryPictureItem)
                    });
                }
            }
            else
            {
                if (_selectedSequentialPictureList.Any(i => i == memoryPictureItem))
                {
                    _selectedSequentialPictureList.Remove(memoryPictureItem);
                    var testingClickInfo = _testRecordInfo.SequentialTestingClickInfos.First(i => i.PictureName == Path.GetFileNameWithoutExtension(memoryPictureItem.ImageUri));
                    _testRecordInfo.SequentialTestingClickInfos.Remove(testingClickInfo);
                }
            }

            SequentialConfirmPanel.IsEnabled = _selectedSequentialPictureList.Count >= TrainingStageSetting.ClickMaxLimit;
        }