views:

83

answers:

1

Hi, what am I doing wrong here? I'm trying to create a DataTemplate using a collection inside the DataContext object, like the following:

C#:

namespace StackOverflowTests
{
    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
     public Window1()
     {
      InitializeComponent();

      this.DataContext = new People();
     }
    }

    class People
    {
     public List<Person> PersonList { get; set; }

     public People()
     {
      this.PersonList = new List<Person>()
      {
       new Person(){FirstName = "Carlo", LastName = "Toribio" },
       new Person(){FirstName = "Guy", LastName = "Incognito" }
      };
     }
    }

    class Person
    {
     public string FirstName { get; set; }
     public string LastName { get; set; }
    }
}

XAML:

 <Window x:Class="StackOverflowTests.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window1" x:Name="window1" Height="300" Width="300">
        <Window.Resources>
         <DataTemplate x:Key="peopleTemplate">
          <StackPanel>
           <TextBlock Text="First Name" FontWeight="Bold" />
           <TextBlock Text="{Binding PersonList.FirstName}" />
           <TextBlock Text="Last Name" FontWeight="Bold" />
           <TextBlock Text="{Binding PersonList.LastName}" />
          </StackPanel>
         </DataTemplate>
        </Window.Resources>
        <Grid x:Name="gridMain">
         <ItemsControl ItemsSource="{Binding}" ItemTemplate="{StaticResource peopleTemplate}" />
        </Grid>
    </Window>

I've done this a lot easier by using a class that inherits from Collection, but for many reasons, I can't do that to solve this problem. Any suggestion is greatly appreciated.

Thanks!

+3  A: 

try this one:

<Grid x:Name="gridMain">
   <ItemsControl ItemsSource="{Binding PersonList}" ItemTemplate="{StaticResource peopleTemplate}" />
 </Grid>
Marcel Benthin
This worked! I also had to take out the PersonList from <TextBlock Text="{Binding PersonList.FirstName}" /> and <TextBlock Text="{Binding PersonList.LastName}" /> in the DataTemplate. Thanks!
Carlo
You also need to change peopleTemplate to just have {Binding FirstName} instead of PersonList
Stephan
@Carlo: right, i missed that. Sry
Marcel Benthin