Во-первых, вы используете поля, где вы должны использовать свойство public
(то есть люди, имя и фамилия).Преобразуйте people
в публичное свойство, например:
public static List<People> people { get; set; }
Затем вам нужно связать ItemsSource
с помощью x:Static
разметки, например:
<ListBox x:Name="peoplelistbox" Margin="0,0,-12,0">
<ListBox.ItemsSource>
<Binding Source="{x:Static local:DataSource.people}"/>
<ListBox.ItemsSource/>
...
PS: local
- это пространство имен xml, указывающее на пространство имен вашего DataSource
класса.Кроме того, ваш класс тоже должен быть общедоступным.
РЕДАКТИРОВАТЬ: Для WP7 вам необходимо объявить экземпляр класса в ресурсах, а затем вы можете использовать Path
, чтобы указать на источник.Например:
<phone:PhoneApplicationPage.Resources>
<local:DataSource x:Key="dataSource"/>
</phone:PhoneApplicationPage.Resources>
...
<ListBox x:Name="peoplelistbox" Margin="0,0,-12,0" ItemsSource="{Binding Source={StaticResource dataSource}, Path=people}">
PS: Опять же, ваш класс должен быть общедоступным и иметь конструктор по умолчанию.
РЕДАКТИРОВАТЬ: Вот пример, который отлично работает на моей системе.Проверьте и посмотрите, где вы делаете ошибку:
namespace WindowsPhoneApplication1
{
public class People
{
public string firstname { get; set; }
public string lastname { get; set; }
}
public class DataSource
{
public static List<People> people { get; set; }
public DataSource() { }
static DataSource()
{
people = new List<People> {new People {firstname = "Foo", lastname = "Bar"}};
}
}
public partial class MainPage : PhoneApplicationPage
{
// Constructor
public MainPage()
{
InitializeComponent();
}
}
}
Xaml (только соответствующие части):
...
...
xmlns:local="clr-namespace:WindowsPhoneApplication1"
...
...
<phone:PhoneApplicationPage.Resources>
<local:DataSource x:Key="dataSource"/>
</phone:PhoneApplicationPage.Resources>
...
...
<ListBox x:Name="peoplelistbox" Margin="0,0,-12,0" ItemsSource="{Binding Source={StaticResource dataSource}, Path=people}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin="0,0,0,17" Width="432">
<TextBlock Text="{Binding firstname}" TextWrapping="Wrap"/>
<TextBlock Text="{Binding lastname}" TextWrapping="Wrap"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>