2009-06-01 3 views
1

что я делаю неправильно здесь? Я пытаюсь создать DataTemplate с помощью набора внутри DataContext объекта, как следующее:DataBinding с DataContext

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> 

Я сделал это намного проще используя класс, который наследует от Collection<T>, но по многим причинам я не могу этого сделать, чтобы решить эту проблему. Любое предложение очень ценится.

Спасибо!

ответ

4

попробовать это одно:

<Grid x:Name="gridMain"> 
    <ItemsControl ItemsSource="{Binding PersonList}" ItemTemplate="{StaticResource peopleTemplate}" /> 
</Grid> 
+0

Это сработало! Мне также пришлось вынуть PersonList из и в DataTemplate. Благодаря! – Carlo

+1

Вам также нужно изменить peopleTemplate, чтобы просто {Binding FirstName} вместо PersonList – Stephan

+0

@ Карло: право, я пропустил это. Sry –

Смежные вопросы