Связывание данных с DataContext - PullRequest
1 голос
/ 01 июня 2009

что я тут не так делаю? Я пытаюсь создать DataTemplate, используя коллекцию внутри объекта 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>, но по многим причинам я не могу сделать это для решения этой проблемы. Любое предложение приветствуется.

Спасибо!

1 Ответ

4 голосов
/ 01 июня 2009

попробуйте это:

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