在Windows 7手機(Silverlight的平臺),當創建一個列表框,該列表框的名稱instatiated並分配到相同名稱的變量:參照對象變量名的C#實例與字符串
<ListBox Name="abcFeed" ...
並用作:
abcFeed.ItemsSource = feed.Items;
在我的應用我有很多的飼料,並希望將它們分配到各自的列表框。我有一個字典字典中的列表框的名稱。
this.feeds["abcFeed"] = "http://feed.abc.com/....";
this.feeds["nbcFeed"] = "http://feed.nbc.com/....";
但比使用交換機分配給我想從我的字典,並在一個循環中採取ListBox的字符串名稱動態調用的情況下,列表框飼料等。
例如,而不是這樣做的:
feedName = "nbcFeed";
// Bind the list of SyndicationItems to our ListBox.
switch (feedName)
{
case "abcFeed":
abcFeed.ItemsSource = feed.Items;
break;
case "nbcFeed":
nbcFeed.ItemsSource = feed.Items;
break;
}
我想以某種方式拿字典鍵並調用 實例VARIABLENAME像:
feedName = "nbcFeed";
// nbcFeed.ItemsSource = feed.Items;
((ListBox) feedName).ItemsSource = feed.Items;
我已經研究過反思,大會和Activator.CreateInstance()(雖然我已經提供了這個實例),但是我沒有清楚地理解這是否可能。
可以這樣做,還是我堅持與開關?
我也試過:
this.GetType().GetProperty(feedName).ItemsSource = feed.Items;
,但我得到一個錯誤:
Cannot convert lambda expression to type 'System.Delegate' because it is not a delegate type
你也許可以使用FindName對於這個..或VisualTreeHelper找到類型列表框的項目,然後找到一個地方名稱=你正在尋找(和可能緩存結果) – 2012-07-31 05:01:59
HTTP名稱: //msdn.microsoft.com/en-us/library/system.windows.frameworkelement.findname.aspx – 2012-07-31 05:04:24