在运行时从XAML初始化数组

时间:2012-03-02 20:44:32

标签: silverlight windows-phone-7 xaml

我想在运行时从XAML初始化一个数组,就像在Android上一样。 我试过这样做:

<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:coll="clr-namespace:System.Collections;assembly=mscorlib">

<coll:ArrayList x:Key="Hello"></coll:ArrayList>

但是当我尝试像这样从XAML加载它时

 new ResourceDictionary { Source = new Uri("Commands/MPC/resources.xaml", UriKind.Relative) }

我得到一个例外。不确定我是否正确。

1 个答案:

答案 0 :(得分:0)

您不能在Silverlight中使用System.Collections.ArrayList,因为Silverlight没有它。请参阅MSDN documentation for the System.Collections namespace

您可以做的一件事是创建System.Collections.Generic.List&lt; T&gt;的子类。除了填充泛型类型参数的值之外,它什么都不做:

using System.Collections.Generic;

public class MyList : List<object>
{
    // Class has empty body
}

然后你可以在XAML中使用它:

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:mycoll="clr-namespace:MyNamespace;assembly=MyAssembly">

    <mycoll:MyList x:Key="Hello"></mycoll:MyList>

</ResourceDictionary>

如果您知道自己只会将此类与SomeType类型的对象一起使用,则可以继承List<SomeType>而不是List<object>