2017-01-17 2 views
0

Если вы хотите заполнить DataGrid, вы можете добавить их, чтобы дать Datagrid.ItemSource список объектов. Например, Person (имя, возраст, ...) или что-то еще.C# WPF DataGrid Style from ItemSource

Есть ли способ разместить дополнительную информацию (дополнительную информацию) в Object (Person) для каждой строки в DataGrid, используя только Datagrid.ItemSource = List<Person>?

+0

вы спрашиваете, если вы можете стилизации DataGrid строки, основанную на свойствах объектов в grids itemsource? – grantnz

+0

Да, это вопрос – Denis

ответ

0

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

Вместо этого я бы рекомендовал использовать конвертер. Когда ваши данные, такие как возраст, передаются в окно WPF, ваш конвертер будет выполнен, и вы можете вернуть все, что захотите, например, значок, цвет и т. Д. Таким образом вы можете настроить каждую строку и сохранить логику в конвертере без класс Person смешивается с материалом UI.

0

Вы можете добавить DataGridTemplateColumn в коллекцию Столбцов DataGrid и поставить любой UIElement вы хотите в своей CellTemplate, например:

<DataGrid> 
    <DataGrid.Columns> 
     <DataGridTemplateColumn> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <StackPanel> 
         <Rectangle Width="50" Height="50" Fill="Gray" /> 
         <TextBlock Text="{Binding Name}" /> 
        </StackPanel> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 
    </DataGrid.Columns> 
</DataGrid>