Datagrid根据数据网格中的单元格单击打开和关闭编辑模式

时间:2014-06-30 21:09:45

标签: c# wpf

我有一个WPF数据网格,默认情况下我已关闭编辑模式。 我在数据网格上有一个更新图标,当我点击每行上的更新图标时,我希望编辑模式设置为打开,数据网格的第一个单元格应该被聚焦。

  <DataGrid  Grid.Row="2" Name="dgList" Margin="0,10,0,0" ItemsSource="{Binding List,Mode=TwoWay}" RowHeight="40" ColumnWidth="*"
                          AutoGenerateColumns="False" CanUserAddRows="False" MouseLeftButtonDown="dgList_MouseLeftButtonDown" 
              PreviewMouseLeftButtonDown="dgList_PreviewMouseLeftButtonDown" > 
                    <DataGrid.Columns>
                        <DataGridTemplateColumn Header="Image" MinWidth="250" IsReadOnly="True">
                            <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <Image Source="{Binding Path=Image, Converter={StaticResource ucconvertToImage}}"/>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>
                        </DataGridTemplateColumn>
                        <DataGridTextColumn Header="Name" MinWidth="250" Binding="{Binding Path=Name,Mode=TwoWay}" IsReadOnly="True"></DataGridTextColumn>
                        <DataGridCheckBoxColumn Header="Is Active" MinWidth="250" Binding="{Binding Path=IsActive}" IsReadOnly="True"></DataGridCheckBoxColumn>
                        <DataGridTemplateColumn Header="Update"  MinWidth="50" MaxWidth="50" SortMemberPath="EditMode" IsReadOnly="False">
                            <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <Image Source="Icons/Update.jpg">
                                        </Image>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>
                        </DataGridTemplateColumn>
                    </DataGrid.Columns>
                </DataGrid>

我想检查是否单击更新图标,首先检查它是否是更新列,然后将isreadonly设置为true。 我使用以下代码来执行此操作,但是,我将发件人视为整个数据网格而不是单元格。

 private void dgList_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            DataGridCell cell = sender as DataGridCell;
            if (cell != null)
            {
                dgList.IsReadOnly = true;
            }
        }

如何点击该行的更新图标,将数据网格属性设置为一行的编辑模式。

1 个答案:

答案 0 :(得分:0)

要设置DataGrid dgList )的编辑/只读模式,您无需点击单元格:只需一个ChecBox(例如名为 chkEdit )在DataGrid之外并添加事件句柄,如下所示:

chkEdit.Click+=()=>{dgList.IsReadOnly = !(bool)chkEdit.IsChecked; };

此致