Для начала я приведу некоторый код, но вы действительно должны прочитать хотя бы некоторые из основ, когда речь идет о XAML и WPF для будущих задач разработки.
Если вы можете обойтись безListBox, я бы предложил использовать DataGrid
(в .Net 4.0 - или в WPF Toolkit на CodePlex ).DataGrid проще использовать в ситуациях, когда вы хотите отобразить данные в виде таблицы или отчета.
Чтобы создать DataGrid в XAML, вы можете использовать следующий код (в .net 4)
<DataGrid HorizontalScrollBarVisibility="Auto" ItemsSource="{Binding Path=ItemsToDisplay}" IsReadOnly="True" AutoGenerateColumns="True" />
Это создаст простой DataGrid
объект для отображения на экране.Поскольку для AutoGenerateColumns
установлено значение true, элементы управления будут автоматически создавать для вас столбцы.
Вы также можете заметить, что я установил свойство ItemsSource
, это свойство, которое DataGrid будетполучить его предметы из.
Чтобы определить это в файле кода страницы, вы сможете сделать что-то вроде этого:
public System.Collections.ObjectModel.ObservableCollection<Item> ItemsToDisplay { get; private set; }
Обратите внимание, какимя свойства в выделенном фрагменте кода совпадает с именем свойства в привязке в сетке данных.Вот как View (файл страницы) связывается с ViewModel (code-behind)
Чтобы проверить его, создайте простой тестовый класс и заполните коллекцию ItemsToDisplay
элементами.
Например:
В моем файле MainWindow.xaml.cs
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = this;
ItemsToDisplay = new System.Collections.ObjectModel.ObservableCollection<Item>();
ItemsToDisplay.Add(new Item("Homer", 45));
ItemsToDisplay.Add(new Item("Marge", 42));
ItemsToDisplay.Add(new Item("Bart", 10));
ItemsToDisplay.Add(new Item("Lisa", 8));
ItemsToDisplay.Add(new Item("Maggie", 2));
}
public System.Collections.ObjectModel.ObservableCollection<Item> ItemsToDisplay { get; private set; }
}
public class Item
{
public string Name { get; private set; }
public int Age { get; private set; }
public Item(string name, int age)
{
Name = name;
Age = age;
}
}
И в моем файле MainWindow.xaml:
<Window x:Class="Stackoverflow.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<DataGrid HorizontalScrollBarVisibility="Auto" ItemsSource="{Binding Path=ItemsToDisplay}" AutoGenerateColumns="True" IsReadOnly="True" />
</Grid>
</Window>
Что выглядит как: