Code-Hunt Ответов: 3

Флажок внутри datagrid в wpf


Всем привет

<DataGrid AutoGenerateColumns="False" Height="141" HorizontalAlignment="Left" Margin="114,109,0,0" Name="DataGrid1" VerticalAlignment="Top" Width="353" ItemsSource="{Binding}" >
<DataGrid.Columns>
    <DataGridTextColumn Header="Alias" Binding="{Binding ItemAdAlias}" Width="50"/>
  <DataGridTextColumn Header="Min Stock" Binding="{Binding ItemAdMin}" Width="60"/>
 <DataGridTextColumn Header="Max Stock" Binding="{Binding ItemAdMax}"/>
 <DataGridTextColumn Header="Current Stock" Binding="{Binding ItemAdCurr}"/>
 <DataGridTextColumn Header="Color" Binding="{Binding ItemAdColor}"/>
 <DataGridTextColumn Header="Set" Binding="{Binding ItemAdSet}"/>
 <DataGridTextColumn Header="Remarks" Binding="{Binding ItemAdRemarks}"/>
</DataGrid.Columns>
                   
   </DataGrid>


Это мой datagrid мое приложение.
теперь я должен добавить еще одну строку с флажками, соответствующими каждому столбцу, и при проверке и снятии флажка сохранить и извлечь значение из базы данных.

Пожалуйста, скажите мне, как это сделать..
или любая другая альтернативная идея будет полезна.

Спасибо

3 Ответов

Рейтинг:
22

ridoy

Вы можете использовать DataGridCheckBoxColumn или DataGridTemplateColumn с флажком внутри. Проверьте эти ссылки, чтобы получить представление о том, как это сделать.
добавление столбца checkbox в WPF datagrid и выделение отмеченных строк [^]
Добавить флажок в WPF Datagrid DatagridTemplateColumnHeader[^]


Рейтинг:
1

Raman Midha

<wpf:DataGridTemplateColumn Width="SizeToHeader" IsReadOnly="True" Header="First Selection">
    <wpf:DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <CheckBox IsChecked="{Binding Path=First}"  Checked="OnChecked" Margin="2,0,2,0" HorizontalAlignment="Center" VerticalAlignment="Stretch" />
        </DataTemplate>
    </wpf:DataGridTemplateColumn.CellTemplate>



Вы можете использовать столбец шаблона для добавления флажка в datagrid .


Member 11437473

Как прочитать состояние флажка в c# для приведенного выше кода.

Рейтинг:
1

pccoder71

Я пошел с очень простым..

<DataGridCheckBoxColumn Binding="{Binding IsChecked, Mode=TwoWay}" IsReadOnly="False">
                                <DataGridCheckBoxColumn.HeaderTemplate>
                                    <DataTemplate>
                                        <CheckBox Checked="FieldDataGridChecked" Unchecked="FieldDataGridUnchecked" Margin="2" />
                                    </DataTemplate>
                                </DataGridCheckBoxColumn.HeaderTemplate>
                            </DataGridCheckBoxColumn>


Просто обработайте проверенные и непроверенные события и примените "проверено" к модели.

private void FieldDataGridChecked(object sender, RoutedEventArgs e)
        {
            foreach (FieldViewModel model in _fields)
            {
                model.IsChecked = true;
            }
        }

        private void FieldDataGridUnchecked(object sender, RoutedEventArgs e)
        {
            foreach (FieldViewModel model in _fields)
            {
                model.IsChecked = false;
            }
        }


CHill60

Однако более 4 лет назад ОП пошел с решением 1. Придерживайтесь ответов на новые вопросы, где ОП все еще нуждается в помощи

pccoder71

да, он это сделал, но это не значит, что мой пример не поможет другим.