Проблема Ноль Вы можете иметь столбцы в таблице данных, сгенерированные для вас, если вы используете AutoGenerateColumns="true"
при настройке своей таблицы данных.Позже он не будет динамически добавлять столбцы, но может, если вы сбросите источник данных?(не является положительным)
Проблема первая DataGrid имеет свойства AlternatingRowBackground
и AlternationCount
для настройки чередующихся рядов фонов.Но я не вижу ничего для чередующихся фонов столбцов в самой сетке.Вы можете сделать это внутри вашей таблицы данных, хотя:
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Background="Red" Foreground="White">I'm Red</TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
Но я все еще вижу поле внутри, даже с margin = 0, поэтому ячейки выглядят забавно, если вы используете какие-то действительно очевидные цвета.
Задача вторая Вы имеете в виду событие CellEndEditing
?Потому что я не вижу никаких других событий редактирования ячейки.Я попробовал следующее:
<DataGrid ItemsSource="{Binding}" AutoGenerateColumns="False" CellEditEnding="DataGrid_CellEditEnding">
<DataGrid.Columns>
<DataGridTextColumn Header="A" Binding="{Binding Field0}" />
<DataGridTemplateColumn Header="BC">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Field1}"/>
<TextBlock Text="{Binding Field2}" />
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBox Text="{Binding Field1}"/>
<TextBox Text="{Binding Field2}" />
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
И мой обработчик событий DataGrid_CellEditEnding
вызывается всякий раз, когда любое из текстовых полей в CellEditingTemplate теряет фокус, независимо от того, изменились данные или нет, поэтому кажется, что у меня все работает.
Используете ли вы какой-либо другой DataGrid, кроме "встроенного" WPF?