WPF c #, связать столбец таблицы данных с кодом позади - PullRequest
3 голосов
/ 31 июля 2011

У меня есть вопрос, как я могу связать столбец таблицы данных с коллекцией?

 dataGrid1.Columns.Add(new DataGridTemplateColumn { Header="d", Binding = "RoomNumber"}); 

привязка не существует, что я могу использовать для привязки?

она работает отлично, но мне нужно связать еес кодом позади

 <DataGridTextColumn Header="Room Number" Binding="{Binding RoomNumber}"/>

Ответы [ 4 ]

8 голосов
/ 31 июля 2011

Насколько я понимаю, вы хотите добавить столбец сетки данных из кода позади, и этот столбец должен работать с привязкой ..?

вот пример кода для добавления столбца сетки данных из кода позади

 var col = new DataGridTextColumn();
            col.Header = "d";
            col.Binding = new Binding("RoomNumber");
            dataGrid1.Columns.Add(col);

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

убедитесь, что отметили AutoGenerateColumns = "False" в вашей сетке данных, чтобы избежать нежелательных столбцов, добавляемых из itemssource.

3 голосов
/ 31 июля 2011

Ответ от bathineni (и других) по существу правильный, если в какой-то момент вы установили свойство ItemsSource DataGrid для своей коллекции.

1 голос
/ 31 июля 2011

Нет способа связать один столбец с коллекцией. Вам нужно будет связать весь DataGrid с источником элементов, который может быть коллекцией или чем угодно, а затем вы будете связывать каждый столбец с какой-то частью этой коллекции

1 голос
/ 31 июля 2011

Используйте свойство itemssource сетки данных для привязки к коллекции.

MSDN

Пример в xaml:

<DataGrid ItemsSource="{Binding Path=Tracks, IsAsync=True}" AutoGenerateColumns="False" >
        <DataGrid.Columns>
            <DataGridTextColumn Header="Song" Width="*" Binding="{Binding Name}" />
            <DataGridTextColumn Header="Artist"  Width="*" Binding="{Binding Artist}" />
            <DataGridTextColumn Header="Album" Width="*" Binding="{Binding Album}" />
        </DataGrid.Columns>
</DataGrid>

пример в коде:

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