noob Привязка данных WPF - почему мои колонки DataGrid не генерируются автоматически? - PullRequest
2 голосов
/ 25 февраля 2011

XAML

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <DataGrid Height="117" HorizontalAlignment="Left" Margin="43,12,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="200" 
              ItemsSource="{Binding}" AutoGenerateColumns="False" >
        <DataGrid.Columns>
            <DataGridTextColumn
                Header="Id" Binding="{Binding Id}"/>
            <DataGridTextColumn
                Header="Name" Binding="{Binding Name}"/>
        </DataGrid.Columns>
    </DataGrid>

* Из того, что я думаю, я прочитал в документах, это сделало бы ряд для каждого элемента в коллекции и столбца для каждой собственности *

        <DataGrid  AutoGenerateColumns="True" Height="117" HorizontalAlignment="Left" ItemsSource="{Binding}" Margin="43,135,0,0" Name="dataGrid2" VerticalAlignment="Top" Width="429">
        </DataGrid>
    </Grid>
</Window>

ДАННЫЕ

namespace WpfApplication1
{
    public class Foo
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

    class Data
    {
        public static IEnumerable<Foo> Foos
        {
            get
            {
                for (int i = 0; i < 5; i++)
                {
                    yield return new Foo { Id = i, Name = "Foo" + i.ToString() };
                }
            }
        }
    }
}

INIT

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        dataGrid1.DataContext = Data.Foos;
        dataGrid2.DataContext = Data.Foos; // corrected thanks to post/answer
    }
}

РЕЗУЛЬТАТ

Редактировать После исправления от автора (спасибо!) Iиметь правильное количество строк, но не столбцы.(это то, что я видел прежде, чем я собрал этот пост, и это был бы оригинальный вопрос, если бы я не обманывала)

enter image description here

1 Ответ

1 голос
/ 25 февраля 2011

EDIT:

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

    dataGrid1.DataContext= new ObservableCollection<Foo>(Data.Foos); 
    dataGrid2.DataContext= new ObservableCollection<Foo>(Data.Foos);

А вот некоторые полезные материалы по ObservableCollection .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...