AutoGenerateColumns機能を使用してFlexGridデータを表示してみます。
最初にFlexGridにセットするデータクラスを作成します。
/// <summary> /// FlexGridのItemsSourceにセットする用のデータクラス /// </summary> public class DummyData { /// <summary>サンプルデータを生成します。</summary> /// <returns></returns> public static IEnumerable<DummyData> CreateSample() { var result = new List<DummyData>(); Random r = new Random(); for (int i = 0; i < 100; i++) { result.Add(new DummyData { Name = "Name" + i, Age = r.Next(0, 100) }); } return result; } public string Name { get; set; } public int Age { get; set; } }
XAMLでFlexGridを設定します。
<UserControl x:Class="FlexGridSample1.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" xmlns:c1="http://schemas.componentone.com/winfx/2006/xaml" d:DesignHeight="300" d:DesignWidth="400"> <Grid x:Name="LayoutRoot" Background="White"> <c1:C1FlexGrid x:Name="FlexGrid" /> </Grid> </UserControl>
ビハインドコードでFlexGridのItemsSourceにデータをセットします。
public partial class MainPage : UserControl { public MainPage() { InitializeComponent(); // FlexGridにデータをセット this.FlexGrid.ItemsSource = DummyData.CreateSample(); } }
DisplayAttributeには対応していない
SilverlightのDataGridの場合DisplayAttributeを使うと列ヘッダーに表示する値を設定できます。
public class DummyData { /// <summary>サンプルデータを生成します。</summary> /// <returns></returns> public static IEnumerable<DummyData> CreateSample() { var result = new List<DummyData>(); Random r = new Random(); for (int i = 0; i < 100; i++) { result.Add(new DummyData { Name = "Name" + i, Age = r.Next(0, 100) }); } return result; } [Display(Name = "名前")] public string Name { get; set; } [Display(Name = "年齢")] public int Age { get; set; } }
このクラスのリストをFlexGridに設定してみましたが、ヘッダー列の文字列は変わりませんでした。FlexGridはDisplayAttributeに対応していないようです。残念。
列ヘッダーの文字列を変更する。
FlexGridで列ヘッダーの文字列を変更する場合、直接カラムインスタンスを操作するようです。
// FlexGridにデータをセット this.FlexGrid.ItemsSource = DummyData.CreateSample(); // 列ヘッダーの文字列を変更する this.FlexGrid.Columns[0].Header = "名前"; this.FlexGrid.Columns[1].Header = "年齢";