Итак, я думаю, исходя из того, что вы сказали, вам придется изменить несколько вещей.Прежде всего, если вы хотите отобразить список списков, вы не сможете сделать это, привязавшись к текстовым полям.Вот способ настроить это.Я знаю, что это не совсем то, что вы просите, но это может привести вас в правильном направлении.
Несколько предостережений:
Не используйтеListBox, если вам не нужен ListBox.ItemsControl прекрасно работает, если вам не нужно выбирать элемент из списка.
Я не уверен на 100%, что вы пытаетесь получить, так что это мое лучшее предположениена то, что вы в конечном итоге хотите увидеть.Если это не совсем так, дайте мне знать, и я посмотрю, смогу ли я еще немного его настроить.
В классе вашего DataContext (например, ViewModel):
public ObservableCollection<Movie> Items { get; set; }
public MainViewModel()
{
XDocument xmlInfo = XDocument.Load(@"c:\temp\Xmlfile1.xml");
var items = xmlInfo.Descendants("movie")
.Select(x => new Movie
{
MovieName = x.Element("name").Value,
Actors = x.Descendants("person").Where(p => p.Attribute("job").Value == "Actor").Select(a=>a.Attribute("name").Value).ToList(),
Directors = x.Descendants("person").Where(p => p.Attribute("job").Value == "Director").Select(a => a.Attribute("name").Value).ToList()
});
Items = new ObservableCollection<Movie>(items);
}
Фильм определяется как:
public class Movie
{
public string MovieName { get; set; }
public List<string> Actors { get; set; }
public List<string> Directors { get; set; }
}
Затем XAML определяется как:
<ListBox ItemsSource="{Binding Items}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding MovieName}" FontSize="32"/>
<StackPanel Orientation="Horizontal">
<ListBox ItemsSource="{Binding Actors}" Margin="5"/>
<ListBox ItemsSource="{Binding Directors}" Margin="5"/>
</StackPanel>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Что дает: