Пример #1
0
        public CardDemo()
        {
            InitializeComponent();

            var cardModel = new CardModel
            {
                Title = "1号线综合监控",
            };

            for (int i = 1; i <= 28; i++)
            {
                cardModel.CardItems.Add($"Item{i}");
            }

            container.DataContext = cardModel;

            var list = Create(cardModel, 5);

            cardContainer.Content = list;
            //Grid.SetRow(list, 1);
            //container.Children.Add(list);
        }
Пример #2
0
        /// <summary>
        /// 根据列动态生成卡片布局
        /// </summary>
        /// <param name="cardModel"></param>
        /// <param name="column"></param>
        /// <returns></returns>
        public Grid Create(CardModel cardModel, int column = 5)
        {
            var count = cardModel.CardItems.Count;
            var row   = (count / column + (count % column == 0 ? 0 : 1)) * 2;

            var grid = new Grid
            {
                Margin = new Thickness(12, 0, 12, 12)
            };

            for (int i = 0; i < column; i++)
            {
                grid.ColumnDefinitions.Add(new ColumnDefinition());
            }

            for (int i = 0; i < row; i++)
            {
                var value = new RowDefinition
                {
                    Height = new GridLength(32),
                };
                grid.RowDefinitions.Add(value);
                var backBorder = new Border
                {
                    Background = new SolidColorBrush(Color.FromRgb(15, 59, 89))
                };

                Grid.SetColumnSpan(backBorder, column);
                Grid.SetRow(backBorder, i / 2 * 2);

                grid.Children.Add(backBorder);
            }

            for (int i = 0; i < cardModel.CardItems.Count; i++)
            {
                var item      = cardModel.CardItems[i];
                var textBlock = new TextBlock
                {
                    Text = item,
                    VerticalAlignment = VerticalAlignment.Center
                };
                Grid.SetRow(textBlock, i / column * 2); // 1/5 =0;(0) 6/5=1;(2) 11 / 5 = 2;(4) 16/5 = 3;(6)
                Grid.SetColumn(textBlock, i % column);
                grid.Children.Add(textBlock);

                var border = new Border
                {
                    Background   = new SolidColorBrush(Color.FromRgb(62, 196, 26)),
                    Width        = 12,
                    Height       = 12,
                    CornerRadius = new CornerRadius(6),
                    Effect       = new BlurEffect()
                    {
                        KernelType = KernelType.Gaussian, Radius = 2
                    }
                };
                Grid.SetRow(border, i / column * 2 + 1);
                Grid.SetColumn(border, i % column);
                grid.Children.Add(border);
            }

            return(grid);
        }