Настройка столбцов DataGridView

WPF
  1. 6 года назад

    Подскажите как привязать к столбцу грида источник.
    В winform я делаю так

    ModEntities model = new ModEntities();
    IEnumerable<sprfil_tov_Result> sel = model.sprfil_tov();
    //grid
    dgvName.AutoGenerateColumns = false;
    dgvName.DataSource = sel;
    // подключаем только одно поле из выборки
    dgvName.Columns["tov"].DataPropertyName = "tov";

    Не могу понять, как это сделать в WPF

  2. Добавлено 6 года назад IIIEIX

    так же, используй WindowsFormsHost

  3. Alexandr_Erohin

    Nov 19 Администратор

    Если каждый столбец в DataGrid имеет атрибут Name то привязку можно указать следующим образом:

    tov.Binding = new Binding("tov");

    А вообще если используешь WPF, то такие вещи надо делать в разметке. Приведу максимально простой пример использования привязки в элементе DataGrid:

    XAML:

    <DataGrid x:Name="datagrid" AutoGenerateColumns="False">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Id" Binding="{Binding Path=id}"></DataGridTextColumn>
                <DataGridTextColumn Header="Имя" Binding="{Binding Path=Name}"></DataGridTextColumn>
                <DataGridTextColumn Header="Фамилия" Binding="{Binding Path=Family}"></DataGridTextColumn>
            </DataGrid.Columns>
    </DataGrid>

    C#:

    class User
        {
            public int id { get; set; }
            public string Name {get; set;}
            public string Family { get; set;}
    
            public User(int id, string name, string family)
            {
                this.id = id;
                this.Name = name;
                this.Family = family;
            }
    
            public static IEnumerable<User> getEnumerable(User[] arr)
            {
                return arr.Select(i => i);
            }
     }
    
    ...
    
    public MainWindow()
            {
                InitializeComponent();
    
                User[] myUsers = {new User(1, "Василий","Пупкин"),
                                   new User(2, "Иван", "Сидоров"),
                                   new User(3, "Акакий", "Дураков")};
    
                datagrid.ItemsSource = User.getEnumerable(myUsers);
    }
    
    ...

    Как видишь привязку указываем в разметке (атрибуты Binding в столбцах), а сам контекст данных задаем в коде (ItemsSource)[/quote]

  4. Спасибо Alexandr_Erohin.

или зарегистрируйтесь чтобы ответить