私は現在、WPFアプリケーション用のスプレッドシートのようなGUIを構築する任務を負っていますが、いくつかの問題が発生しました。基本的に、1つの列に特定の年のデータが含まれるように、列ごとにデータグリッドにバインドしたいと思います。2006年が開始年で、2009年が終了年であることを考えると、それぞれが特定の年の値を列ベースで表示する4つの列が必要です。
これは私が今コードビハインドに持っているものです:
private Years m_YearsList;
public Years YearsList
{
get { return m_YearsList; }
set { m_YearsList = value; }
}
public MainWindow()
{
InitializeComponent();
YearsList = LoadData();
TestGrid.DataContext = YearsList;
}
public Years LoadData()
{
var personer = new Years{
new Year
{
Taxed = new Taxed {TaxedField = 10},
NumBuildings = new BuildingsCollection {NumBuildings = 25},
Area = new Area{AreaField = "NoWhere"},
DisplayName = "Person1"
},
new Year
{
Taxed = new Taxed{TaxedField = 2},
NumBuildings = new BuildingsCollection{NumBuildings = 8},
Area = new Area{AreaField = "SomeWhere"},
DisplayName = "Person2"
},
new Year
{
Taxed = new Taxed{TaxedField = 18},
NumBuildings = new BuildingsCollection{NumBuildings = 20},
Area = new Area{AreaField = "UpThere"},
DisplayName = "Person3"
}
};
return personer;
}
}
Yearオブジェクトは、2つのintと1つの文字列を単純にラップします。Yearsオブジェクトは、次のように見える私からの絶望的なショットです。
public class Years : List<Year>{}
私のXAML:
<DataGrid x:Name="TestGrid" ItemsSource="{Binding}" CanUserAddRows="False" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=NumBuildings}" />
<DataGridTextColumn Binding="{Binding Path=Taxed}" />
<DataGridTextColumn Binding="{Binding Path=Area}" />
</DataGrid.Columns>
</DataGrid>
このコードはこれを生成します:
ご覧のとおり、Yearオブジェクトは列ごとに1つのプロパティにバインドされていますが、基本的には、すべてのプロパティが1つの列にある1つのオブジェクトにバインドされています。残念ながら、私のWPFスキルはここに欠けています。:(