public OrcasAvalonApplicationCanvas() { Width = DefaultWidth; Height = DefaultHeight; new[] { Colors.Black, Colors.Green, Colors.Black }.ToGradient(DefaultHeight / 4).Select( (c, i) => new Rectangle { Fill = new SolidColorBrush(c), Width = DefaultWidth, Height = 4, }.MoveTo(0, i * 4).AttachTo(this) ).ToArray(); // step 1 - can we show a card? // step 2 drag the cards around var deck = new CardDeck().AttachContainerTo(this); deck.SizeTo(DefaultWidth, DefaultHeight); deck.UnusedCards.AddRange(CardInfo.FullDeck()); var PlayStack = deck.CreateStackList(); { PlayStack.Add( new CardStack { }.MoveTo(64, 64) ); PlayStack.Add( new CardStack { }.MoveTo(64 + CardInfo.Width, 64) ); var s3 = new CardStack { deck.FetchCard, deck.FetchCard, deck.FetchCard, }.MoveTo(64 + CardInfo.Width * 2, 64); PlayStack.Add(s3); s3.ForEach(k => k.VisibleSide = Card.SideEnum.TopSide); } { PlayStack.Add( new CardStack { }.MoveTo(64, 264) ); PlayStack.Add( new CardStack { }.MoveTo(64 + CardInfo.Width, 264) ); var s3 = new CardStack { deck.FetchCard, deck.FetchCard, deck.FetchCard, }.MoveTo(64 + CardInfo.Width * 2, 264); PlayStack.Add(s3); s3.RevealLastCard(); } // step 3 drag cards from stack to stack }