示例#1
0
        public LoginView()
        {
            InitializeComponent();
#if DEBUG
            Loaded += (sender, args) =>
            {
                var loginVm = (LoginViewModel)DataContext;
                loginVm.Username = "******";
                var pw = new SecureString();
                foreach (var c in "admin")
                {
                    pw.AppendChar(c);
                }

                TaskExtensions.Forget(loginVm.LoginCommand.Execute(pw));
            };
#endif
        }
 public void Update(List <Hearthstone.Card> cards, bool reset)
 {
     try
     {
         if (reset)
         {
             _animatedCards.Clear();
             ItemsControl.Items.Clear();
         }
         var newCards = new List <Hearthstone.Card>();
         foreach (var card in cards)
         {
             var existing = _animatedCards.FirstOrDefault(x => AreEqualForList(x.Card, card));
             if (existing == null)
             {
                 newCards.Add(card);
             }
             else if (existing.Card.Count != card.Count || existing.Card.HighlightInHand != card.HighlightInHand)
             {
                 var highlight = existing.Card.Count != card.Count;
                 existing.Card.Count           = card.Count;
                 existing.Card.HighlightInHand = card.HighlightInHand;
                 TaskExtensions.Forget(existing.Update(highlight));
             }
             else if (existing.Card.IsCreated != card.IsCreated)
             {
                 TaskExtensions.Forget(existing.Update(false));
             }
         }
         var toUpdate = new List <AnimatedCard>();
         foreach (var aCard in _animatedCards)
         {
             if (!cards.Any(x => AreEqualForList(x, aCard.Card)))
             {
                 toUpdate.Add(aCard);
             }
         }
         var toRemove = new List <Tuple <AnimatedCard, bool> >();
         foreach (var card in toUpdate)
         {
             var newCard = newCards.FirstOrDefault(x => x.Id == card.Card.Id);
             toRemove.Add(new Tuple <AnimatedCard, bool>(card, newCard == null));
             if (newCard != null)
             {
                 var newAnimated = new AnimatedCard(newCard);
                 _animatedCards.Insert(_animatedCards.IndexOf(card), newAnimated);
                 ItemsControl.Items.Insert(_animatedCards.IndexOf(card), newAnimated);
                 TaskExtensions.Forget(newAnimated.Update(true));
                 newCards.Remove(newCard);
             }
         }
         foreach (var card in toRemove)
         {
             RemoveCard(card.Item1, card.Item2);
         }
         foreach (var card in newCards)
         {
             var newCard = new AnimatedCard(card);
             _animatedCards.Insert(cards.IndexOf(card), newCard);
             ItemsControl.Items.Insert(cards.IndexOf(card), newCard);
             TaskExtensions.Forget(newCard.FadeIn(!reset));
         }
     }
     catch (Exception e)
     {
         Log.Error(e);
     }
 }