Ну, а как насчет ListBox с ItemTemplate
с учетом ваших данных?
Это ListBox
:
<ListBox HorizontalAlignment="Left" Margin="12,6,0,0" Name="listBox1" VerticalAlignment="Top">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150" />
<ColumnDefinition Width="150" />
<ColumnDefinition Width="150" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding a}" Margin="0,0,12,0" />
<TextBlock Grid.Column="1" Text="{Binding b}" Margin="0,0,12,0" />
<TextBlock Grid.Column="2" Text="{Binding c}" Margin="0,0,12,0" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Он использует сетку для каждого элемента, помещая значения в отдельные столбцы. Вы можете поэкспериментировать с размерами столбцов.
Это демонстрирует привязку:
private void button1_Click(object sender, RoutedEventArgs e)
{
List<MyObject> list = new List<MyObject>();
list.Add(new MyObject() { a = 1, b = 2, c = 3 });
list.Add(new MyObject() { a = 4, b = 57346, c = 6 });
list.Add(new MyObject() { a = 7, b = 8, c = 9 });
listBox1.ItemsSource = list;
}
Я просто создаю список с подготовленными данными и устанавливаю его как ItemsSource
из списка. В вашем случае данные будут поступать из XML.
И я использовал этот фиктивный класс для тестирования:
public class MyObject
{
public int a { get; set; }
public int b { get; set; }
public int c { get; set; }
}
В нем только 3 поля для демонстрации того, как это работает. Вы можете легко добавить и другие поля. Для каждого дополнительного поля добавьте еще один ColumnDefinition
и TextBlock
в XAML и установите Binding
соответственно.