のデータを使用して行を追加する場合は、Dictionary<string, object>
に似ています。 string
は列のヘッダーで、object
の値は列の値です。 毎回、新しいデータを取得するときに、列の数が異なる可能性があるため、新しいGridView
を作成しています。 List
では、myItemsはすべて私の見解で表示したいすべての行Dictionary<string, object>
です。画像を含むリストビューに列を追加します。
これは私が私の見解に列を追加する方法です:
List<Column> columns = new List<Column>();
myItemValues = (IDictionary<string, object>)myItems[0];
// Key is the column, value is the value
foreach (var pair in myItemValues)
{
Column column = new Column();
column.Title = pair.Key;
column.SourceField = pair.Key;
columns.Add(column);
}
view.Columns.Clear();
foreach (var column in columns)
{
Binding binding = new Binding(column.SourceField);
if (column.SourceField == "Icon")
{
view.Columns.Add(new GridViewColumn
{
Header = column.Title,
DisplayMemberBinding = binding,
CellTemplate = new DataTemplate(typeof(Image))
});
}
else
{
view.Columns.Add(new GridViewColumn { Header = column.Title, DisplayMemberBinding = binding });
}
}
直接この後、私は行を追加しよう:
foreach (dynamic item in myItems)
{
this.listView.Items.Add(item);
}
私は他の目的のために、このsolutionを変更することしようと試みました。私は唯一のタイプstring
の値を追加したい場合は、このソリューションは、非常にうまく動作しますが、今私はまた、GridViewの中image
を表示したいが、私は私のGridViewの1つを追加した場合、それはちょうど私を示しています
「System.Windows.Controls.Image」
は今、私はGridViewの内いずれかのタイプ(または少なくともimages
とstrings
)を表示することができますように私は私のコードを変更することができれば、知りたいか、私が持っています完全に新しい方法を使用して、方法になりますか?
EDIT:従来のアプローチでは、それは私が画像を表示するために新しいDataTemplate
を作成する必要があると、言われましたが、私が見つけた解決策(Solution 1、Solution 2)のどれも私のために働いていません。
は 'のCeを設定してみてください列を作成するループ内のデータのタイプに基づいて列の「llTemplate」を作成します。これは、ある列が常に同じタイプのデータを表示する場合です。 データ型を行ごとに変更できる場合は、適切なテンプレートが使用されるように 'CellTemplateSelector'を追加できます。 – Shadowed
私は新しい 'DataTemplate'を作成し、' DataType'を 'typeof(Image)'に設定しました。より多くのプロパティを設定する必要がありますか?私はまだ同じ結果を得ているからです。 – daniel59
これらのソリューションを試してDataTemplateを作成しました:http://stackoverflow.com/questions/248362/how-do-i-build-a-datatemplate-in-c-sharp-code and http://stackoverflow.com/questions/5471405/create-datatemplate-in-code-behindのいずれかが私のために働いています。では、 'gridview'に' images'を提供する 'DataTemplate'をどうすれば作成できますか? – daniel59