タイトルを間違えるかもしれませんが、読み続けてください。
動的データグリッドが必要なので、「選択された」列を表示するこのメソッドを使用して列を作成しています。
public void ConfigureGridColumns()
{
App.Instance.MainWindow.grdDetail.mainGrd.Columns.Clear();
var stats = new List<Statistic>();
stats.AddRange(App.Instance.Manager.PersonalizeStatistics.OrderBy(x => x.Index).Where(x => x.Selected).Select(x => x.Statistic));
foreach (var stat in stats)
{
var column = new DataGridTextColumn
{
Header = stat.Name,
Binding = new Binding(stat.Key)
};
}
}
150を超える動的列があるため、すべての列を含むモデルを作成したくありません。
したがって、行の列が前のようにキーによってマップされるカスタムDataTableを構築することにより、ItemsSourceを動的に生成しています。
private void ConfigureGridSource()
{
var dt = new DataTable("stats");
foreach (var player in App.Instance.Manager.Players.Values.Take(5))
{
var row = dt.NewRow();
foreach (var stat in stats)
{
if (!dt.Columns.Contains(stat.Statistic.Key))
t.Columns.Add(stat.Statistic.Key, typeof(StatisticPersonalizedValue));
var persStat = new StatisticPersonalizedValue(stat);
persStat.Value = player.Statistics[stat.Statistic.Key];
row[stat.Statistic.Key] = persStat;
}
dt.Rows.Add(row);
}
grdDetail.mainGrd.ItemsSource = CollectionViewSource.GetDefaultView(dt.DefaultView);
}
問題は次のとおりです。
と
Binding = new Binding(stat.Key)
StatisticPersonalizedValueの名前空間をテキストとして取得します
と
Binding = new Binding("Value")
空の文字列を取得します(Valueは、2番目のメソッドで評価されているStatisticPersonalizedValueのプロパティです)
場合に備えて正と負の値のセッターもあるのでモデルを使用していますが、これを修正する方法について何か考えがありますか?