我想使用ExpandoObject
中的數據添加一行,這與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);
}
我tryed修改此solution用於其他目的。這個解決方案工作得很好,如果我只想要添加的類型string
的值,但現在我也想顯示在GridView的image
,但如果我添加一個到我的GridView控件,它顯示我只是:
「System.Windows.Controls.Image」
現在我想知道,如果我可以修改我的代碼,這樣我可以顯示在GridView任何類型的(或至少images
和strings
)還是我使用完全新的方式,將是方式?
編輯:在以前的辦法,有人說,我需要創建一個新的DataTemplate
顯示的圖像,但沒有解決方案(Solution 1,Solution 2)我發現爲我工作。
嘗試設置'鈰根據循環中創建列的數據類型,使用「llTemplate」作爲列。這是爲了防止一列總是顯示相同類型的數據。 如果數據的類型可能因行而改變,您可以添加'CellTemplateSelector',以便使用正確的模板。 – Shadowed
我創建了一個新的'DataTemplate'並將'DataType'設置爲'typeof(Image)'。我必須設置更多屬性嗎?因爲我仍然得到相同的結果。 – daniel59
我嘗試了這些解決方案來創建DataTemplate:http://stackoverflow.com/questions/248362/how-do-i-build-a-datatemplate-in-c-sharp-code和http://stackoverflow.com/questions/5471405/create-datatemplate-in-code-behind但它們都不適用於我。那麼如何創建一個在'gridview'中提供'images'的'DataTemplate'? – daniel59