Я новичок в этом, так что терпите меня.
У меня есть модель представления и представление с ItemsControl, в котором уже есть некоторые данные, с собственным источником элементов.
Однако я фактически хочу пронумеровать элементы в элементе управления, потому что их всегда 10. Я мог бы сделать это, просто добавив множество текстовых блоков вдоль левой стороны, но это просто утомительно, и я пытаюсь найти другой способ.
Итак, суть того, что у меня есть на данный момент:
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding RelativeSource={RelativeSource AncestorType=ItemsControl}, Path=DataContext.Nums}" />
<TextBlock Grid.Column="1" Text="{Binding Item1}" />
<TextBlock Grid.Column="2" Text="{Binding Item2}" />
</Grid>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
Моя проблема в том, что, конечно, он просто отображает один и тот же элемент для каждого из них, который в данном случае «(Коллекция)», потому что у меня есть свойство списка с 1-10 в нем.
Привязка к этому в отдельном файле .cs:
private List<int> _nums = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
public List<int> Nums
{
get { return _nums; }
}
ИЗМЕНИТЬ:
Поэтому я нашел решение, создав новое свойство в источнике элементов, которое было строкой, а затем, немного повозившись с тем, как мое приложение собирает исходные данные, я смог заставить его работать последовательно.
Мне все еще интересно, сработал бы ли этот метод, однако, на мой взгляд, работы было бы намного меньше.
Enumerable.Range
? Это очень удобно:List<int> _nums = Enumerable.Range(1, 10).ToList();
. Очевидно, что это более полезно с большими диапазонами. - person Sheridan   schedule 04.10.2013