【问题标题】:Datagrid set edit mode on and off based on cell click in data gridDatagrid根据数据网格中的单元格单击打开和关闭编辑模式
【发布时间】:2014-08-21 08:20:57
【问题描述】:

我有一个 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;
            }
        }

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

【问题讨论】:

  • 您的问题到底是什么?请缩小到具体问题。谢谢和问候,

标签: c# wpf


【解决方案1】:

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

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

问候,

【讨论】:

  • 要求网格的每一行都有一个更新图标。
  • 那么它可能应该是 dgList.IsReadOnly = false;为了允许编辑。 Rgds,
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-28
  • 2023-01-14
  • 1970-01-01
相关资源
最近更新 更多