첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
유용한 소스 코드가 있으면 icodebroker@naver.com으로 보내주시면 감사합니다.
블로그 자료는 자유롭게 사용하세요.

■ DataGrid 엘리먼트 : 데이터 주석 특성을 사용해 컬럼 속성 설정하기

------------------------------------------------------------------------------------------------------------------------

ProductColor.cs

 

 

using System.ComponentModel.DataAnnotations;

 

/// <summary>

/// 제품 색상

/// </summary>

public enum ProductColor

{

    /// <summary>

    /// 빨강

    /// </summary>

    Red,

 

    /// <summary>

    /// 흰색

    /// </summary>

    White,

 

    /// <summary>

    /// 보라

    /// </summary>

    Purple,

 

    /// <summary>

    /// 파랑

    /// </summary>

    Blue

}

 

 

Product.cs

 

 

using System.ComponentModel.DataAnnotations;

 

/// <summary>

/// 제품

/// </summary>

public class Product

{

    //////////////////////////////////////////////////////////////////////////////////////////////////// Property

    ////////////////////////////////////////////////////////////////////////////////////////// Public

 

    #region 제품 ID - ProductID

 

    /// <summary>

    /// 제품 ID

    /// </summary>

    [Display(Name="Product Number")]

    [Range(0, 5000)]

    public int ProductID { get; set; }

 

    #endregion

 

    #region 제품명 - ProductName

 

    /// <summary>

    /// 제품명

    /// </summary>

    [Display(Name="Name")]

    [Required]

    public string ProductName { get; set; }

 

    #endregion

 

    #region 리스트 가격 - ListPrice

 

    /// <summary>

    /// 리스트 가격

    /// </summary>

    [Display(Name="Price")]

    [DataType(DataType.Currency)]

    public double ListPrice { get; set; }

 

    #endregion

 

    #region 제품 색상 - ProductColor

 

    /// <summary>

    /// 제품 색상

    /// </summary>

    [Display(Name="Color")]

    [EnumDataType(typeof(ProductColor))]

    public ProductColor ProductColor { get; set; }

 

    #endregion

 

    #region 재고 여부 - InStock

 

    /// <summary>

    /// 재고 여부

    /// </summary>

    [Display(Name="Available")]

    public bool InStock { get; set; }

 

    #endregion

 

    //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor

    ////////////////////////////////////////////////////////////////////////////////////////// Public

 

    #region 생성자 - Product()

 

    /// <summary>

    /// 생성자

    /// </summary>

    public Product()

    {

    }

 

    #endregion

 

    #region 생성자 - Product(productID, productName, listPrice, productColor, inStock)

 

    /// <summary>

    /// 생성자

    /// </summary>

    /// <param name="productID">제품 ID</param>

    /// <param name="productName">제품명</param>

    /// <param name="listPrice">리스트 가격</param>

    /// <param name="productColor">제품 색상</param>

    /// <param name="inStock">재고 여부</param>

    public Product(int productID, string productName, double listPrice, ProductColor productColor, bool inStock)

    {

        ProductID    = productID;

        ProductName  = productName;

        ListPrice    = listPrice;

        ProductColor = productColor;

        InStock      = inStock;

    }

 

    #endregion

}

 

 

MainPage.xaml

 

※ System.Windows.Controls.Data 참조를 추가한다.

 

 

<Grid xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk">

    <StackPanel

        Width="600"

        Height="450">

        <TextBlock

            Text="Products" />

        <sdk:DataGrid x:Name="dataGrid"

            Foreground="Black"

            AutoGenerateColumns="True">

        </sdk:DataGrid>

    </StackPanel>

</Grid>

 

 

MainPage.xaml.cs

 

 

using System.Collections.ObjectModel;

 

...

 

/// <summary>

/// 제품 컬렉션

/// </summary>

private ObservableCollection<Product> productCollection;

 

...

 

this.productCollection = new ObservableCollection<Product>();

 

this.productCollection.Add(new Product(1, "Bike" , 500, ProductColor.Red   , true ));

this.productCollection.Add(new Product(2, "Chair", 250, ProductColor.White , true ));

this.productCollection.Add(new Product(3, "Plate", 20 , ProductColor.Purple, false));

this.productCollection.Add(new Product(4, "Kite" , 15 , ProductColor.Blue  , true ));

 

this.dataGrid.ItemsSource = this.productCollection;

 

------------------------------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker

댓글을 달아 주세요