我有一个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;
}
}
如何点击该行的更新图标,将数据网格属性设置为一行的编辑模式。
答案 0 :(得分:0)
要设置DataGrid
( dgList )的编辑/只读模式,您无需点击单元格:只需一个ChecBox
(例如名为 chkEdit )在DataGrid
之外并添加事件句柄,如下所示:
chkEdit.Click+=()=>{dgList.IsReadOnly = !(bool)chkEdit.IsChecked; };
此致