DataGrid AutoGenerateColumns = "True" - как добавить еще один столбец? - PullRequest
5 голосов
/ 23 ноября 2011

Я использую DataGrid с AutoGenerateColumns = "True". Теперь в дополнение к автоматически генерируемым столбцам я хочу добавить один мой «настраиваемый» столбец, так называемый «служебный» столбец. (в нем я хочу иметь несколько гиперссылок «Пуск», «Стоп», «Сброс»).

Как добавить дополнительный столбец?

Я нашел эту страницу http://msdn.microsoft.com/ru-ru/library/system.windows.controls.datagrid.autogeneratecolumns.aspx, которая описывает, как изменить или удалить столбец, но не могу найти, как добавить столбец.

Ответы [ 3 ]

8 голосов
/ 23 ноября 2011

Вы должны иметь возможность добавить столбец в дизайнере, как всегда.Он просто добавит этот столбец ко всем сгенерированным.

РЕДАКТИРОВАТЬ

Извините, я принял WinForms.Хотя та же идея, просто добавьте столбцы непосредственно в XAML:

    <DataGrid AutoGenerateColumns="True" ItemsSource="{Binding Src}" x:Name="Grid">
        <DataGrid.Columns>
            <DataGridCheckBoxColumn Header="Junk"></DataGridCheckBoxColumn>
            <DataGridHyperlinkColumn Header="Junk2"></DataGridHyperlinkColumn>
        </DataGrid.Columns>
    </DataGrid>

Вот модель представления:

public class ViewModel
{
    public ViewModel()
    {
        Src = new ObservableCollection<Item>() { new Item { Id = 1, Name = "A" }, new Item { Id = 2, Name = "B" } };
    }

    public ObservableCollection<Item> Src { get; set; }
}

public class Item{
    public int Id { get; set; }
    public string Name { get; set; }
}

И вот что она показывает:

enter image description here

3 голосов
/ 23 ноября 2011

Вы можете добавить его в XAML, используя <DataGrid.Columns>, или вы можете сделать это в коде.

Имейте в виду, что если вы сделаете это в XAML, по умолчанию будет помещен столбец в начале столбцов, то есть до того, как они будут сгенерированы.

Кроме того, вы можете добавить его в код и, в частности, использовать событие AutoGeneratedColumns, а также код там, и он будет отображаться как последний столбец.

0 голосов
/ 23 ноября 2011

Есть ли у вас набор данных, который вы используете в качестве источника данных?

, если это так, то проще добавить столбец в графическом интерфейсе Visual Studio, задать для Name и DataPropertyName то, что вы можете распознать,и затем добавьте этот столбец в DataSet,

//Assumes you added a column that you named 'clNew'
//Assumes you have one table in your dataset that the DGV is bound to
clNew.Name = "clNew";
clNew.DataPropertyName = "clNew";

ds.Tables[0].Columns.Add("clNew");

Столбец теперь находится в наборе данных, поэтому, если вы перебираете datarows, вы также можете получить к нему доступ.

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