“资源”中的列表.XAML和ViewModel中的访问



如何在资源中创建列表。xaml(我将使用它作为我的列表框的项目源),我怎么能在ViewModel访问它?由于

这可能会有所帮助:Silverlight:在XAML中声明数据集合?

然后可以使用在其中声明集合的控件的Resources属性来访问它。

编辑例如:

你需要声明一个新的集合类型,因为你不能在XAML中声明泛型类型:

using System.Collections.Generic;
namespace YourNamepace
{
    public class Genders : List<string>
    {
    }
}
在添加了必要的名称空间之后,在XAML中声明一个列表:
xmlns:local="clr-namespace:YourNamespace"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
...
<Window.Resources>
    <local:Genders x:Key="AvailableGenders">
        <sys:String>Female</sys:String>
        <sys:String>Male</sys:String>
    </local:Genders>
</Window.Resources>

当然可以用更复杂的数据结构来声明它。然后,使用它作为ListBox的ItemsSource:

<ListBox ItemsSource="{Binding Source={StaticResource AvailableGenders}}"/>

可以,我刚刚测试过了:-)

添加到@JerimyGilbert答案中,您可以从类中填充列表并直接从XAML中使用它,如下所示:

using System.Collections.Generic;
namespace YourNamepace
{
    public class Genders : List<string>
    {
       public Genders()
       {
          Add("Male");
          Add("Female");
       }
    }
}
<Window.Resources>
    <local:Genders x:Key="Genders"/>
</Window.Resources>
<ListBox ItemsSource={Binding Source={StaticReource Genders}}/>

最新更新