zoukankan      html  css  js  c++  java
  • Building a DataGrid with Custom Columns in Silverlight 4.0

    I thought it would be fun to build a DataGrid tha contains a list of starting hads in poker. If you have ever watched poker on TV, you most likely heard the players refer to things like "pocket rockets" and "cowboys". These are smply nicknames they have given to starting hands.

    1. Create a new silverlight called DataGridCustomColumns in VS 2010. And all VS to create a web project to host your application.

    2. After the project is loaded, right-click the DataGridCustomColumns project and select add new item. In the add new item dialog box, select Code File for template, and name the class StartingHands.cs.

    using System;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Ink;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    using System.Collections.ObjectModel;

    namespace SilverlightApplication1
    {
        public class StartingHands
        {
            public string Nickname { get; set; }
            public string Notes { get; set; }
            public string Card1 { get; set; }
            public string Card2 { get; set; }

            public static ObservableCollection<StartingHands> GetHands()
            {
                ObservableCollection<StartingHands> hands = new ObservableCollection<StartingHands>();
                hands.Add(new StartingHands(){Nickname="Big Slick", Notes="Also refered to as Anna Kournikova." ,Card1="As",Card2="Ks"});
                hands.Add(
                        new StartingHands()
                        {
                            Nickname = "Pocket Rockets",
                            Notes = "Also refered to as BUllets.",
                            Card1 = "As",
                            Card2 = "Ks"
                        }
                    );
                hands.Add(
                        new StartingHands()
                        {
                            Nickname = "BlackJack",
                            Notes = "The casino game blackjack.",
                            Card1 = "As",
                            Card2 = "Js"
                        }
                    );
                hands.Add(
                        new StartingHands()
                        {
                            Nickname = "Cowboys",
                            Notes = "Also refered to as King Kong.",
                            Card1 = "As",
                            Card2 = "Kd"
                        }
                    );
                hands.Add(
                        new StartingHands()
                        {
                            Nickname = "Doyle Brunson",
                            Notes = "Named after poker great Doyle Brunson.",
                            Card1 = "Ts",
                            Card2 = "2s"
                        }
                    );
                return hands;
            }
        }
    }

    4. Now that the class is built, in the mainpage.xaml file, change the width of the UserControl to be 500 and add a DataGrid named grdData to the root Grid by double-clicking the DataGrid control in the Toolbox. Add a 15-pixel margin around the DataGrid for some spacing, and set the AutoGenerateColumns property to False. The colde Follows:

    <Grid x:Name="LayoutRoot" Background="White">
            <sdk:DataGrid Name="grid" Margin="10" AutoGenerateColumns="False">

    </Grid>

    5. Next, define the columns in the DataGrid. To do this, add the DataGrid.Columns collection, as follows:

    <Grid x:Name="LayoutRoot" Background="White">
            <sdk:DataGrid Name="grid" Margin="10" AutoGenerateColumns="False">

          <sdk:DataGrid.Columns>                
                  </sdk:DataGrid.Columns>
            </sdk:DataGrid>

    </sdk:DataGrid.Columns>

    Define the first column in Grid contains the two cards in the hand. To build this, you use DataGridTemplateColumn. Within the DataGridTemplateColumn, add the CellTemplate containing a Grid with two columns, each containing a Border, Rectanble, and TextBlock, which will overladp each other. Binding the Two TextBlock controls to the Card1 and card2 properties from the data Source. Enter the following code:

    <sdk:DataGrid Name="grid" Margin="10" AutoGenerateColumns="False">
                <sdk:DataGrid.Columns>
                    <sdk:DataGridTemplateColumn Header="Hand">
                        <sdk:DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <Grid>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition />
                                        <ColumnDefinition />
                                    </Grid.ColumnDefinitions>
                                    <Border Margin="2" CornerRadius="4" BorderBrush="Black" BorderThickness="1" />
                                    <Rectangle Margin="4" Fill="White" Grid.Column="0" />
                                    <Border Margin="2" CornerRadius="4" BorderBrush="Black" BorderThickness="1" Grid.Column="1" />
                                    <Rectangle Margin="4" Fill="White" Grid.Column="1"  />
                                    <TextBlock Text="{Binding Card1}" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Column="0" />
                                    <TextBlock Text="{Binding Card2}" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Column="1" />
                                </Grid>
                            </DataTemplate>
                        </sdk:DataGridTemplateColumn.CellTemplate>
                    </sdk:DataGridTemplateColumn>
                    <sdk:DataGridTextColumn Header="NickName" Binding="{Binding Nickname}" />
                    <sdk:DataGridTextColumn Header="Notes" Binding="{Binding Notes}" />
                </sdk:DataGrid.Columns>
            </sdk:DataGrid>

  • 相关阅读:
    一文看懂Python匿名函数
    Python数据分析库之pandas,你该这么学!No.1
    探究以太坊 2.0 的分叉选择规则
    Plasma 设计综合列表
    从比特币到 Polkadot
    Ethereum Plasma MVP and Plasma Cash
    Java程序员进阶路线-高级java程序员养成
    matlab混合编程向导(vc,vb,.net...)
    matlab混合编程向导(vc,vb,.net...)
    matlab混合编程向导(vc,vb,.net...)
  • 原文地址:https://www.cnblogs.com/jerrychenfly/p/2139441.html
Copyright © 2011-2022 走看看