wpf - 如何在wpf中编辑数据网格中的选择行

标签 wpf datagrid

我有一个与数据网格中的每一行相对应的按钮列编辑,单击该按钮我想获取相应的行编辑值,我们该怎么做

xaml 代码是:-

<Window x:Class="Wpf_grid.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="326" Width="946">
<Grid>
    <DataGrid Name="MyDataGrid" Uid="MyDataGrid" AutoGenerateColumns="False" AlternationCount="2" SelectionMode="Single" Margin="0,31,0,0" >
        <DataGrid.Columns>
            <DataGridTextColumn Binding="{Binding Path=RegId}" IsReadOnly="True" Header="Registration Id" Width="sizeToHeader"/>
            <DataGridTextColumn Binding="{Binding Path=Name}" Header="Name" Width="sizeToHeader" />
            <DataGridTextColumn Binding="{Binding Path=FName}" Header="Father Name" Width="sizeToHeader" />
            <DataGridTextColumn Binding="{Binding Path=ContactNumber}" Header="Contact Number" Width="sizeToHeader" />
            <DataGridTextColumn Binding="{Binding Path=email}" Header="email" Width="sizeToHeader" />
            <DataGridTextColumn Binding="{Binding Path=password}" Header="password" Width="sizeToHeader" />
            <DataGridTextColumn Binding="{Binding Path=paddress}" Header="paddress" Width="sizeToHeader" />
            <DataGridTextColumn Binding="{Binding Path=pcity}" Header="pcity" Width="sizeToHeader" />
            <DataGridTextColumn Binding="{Binding Path=pstate}" Header="pstate" Width="sizeToHeader" />
            <DataGridTextColumn Binding="{Binding Path=ppinCode}" Header="ppinCode" Width="sizeToHeader" />
            <DataGridTextColumn Binding="{Binding Path=caddress}" Header="caddress" Width="sizeToHeader" />
            <DataGridTextColumn Binding="{Binding Path=ccity}" Header="ccity" Width="sizeToHeader" />
            <DataGridTextColumn Binding="{Binding Path=cstate}" Header="cstate" Width="sizeToHeader" />
            <DataGridTextColumn Binding="{Binding Path=cpinCode}" Header="cpinCode" Width="sizeToHeader" />
            <DataGridTemplateColumn Header="Edit Row">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <Button Content="Edit" Click="btnEdit_Click"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
            <DataGridTemplateColumn Header="Delete Row">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <Button Content="Delete" Click="btnDelete_Click"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>
    </DataGrid>

    <Button Content="LoadCustomer" Name="LoadCustomer" Height="23" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75" Margin="0,5,0,0" Click="LoadCustomer_Click" />

</Grid>

.cs 代码是:-

    private void btnEdit_Click(object sender, RoutedEventArgs e)
    {
        try
        {
            gridDataContext datacontext = new gridDataContext();
            registration registrationRow = MyDataGrid.SelectedValue as registration;
            int m = registrationRow.RegId;
            //registration Registration = (from p in datacontext.registrations where p.RegId == registrationRow.RegId select p).Single();
            registration Registration = datacontext.registrations.Where(A => A.RegId == m).Single();
            Registration.Name = registrationRow.Name;
            Registration.FName = registrationRow.FName;
            datacontext.SubmitChanges();
            MessageBox.Show("Row Updated Successfully");
            LoadCustomerDetail();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
            return;
        }
    }

有人告诉我如何在按钮单击时进行编辑吗?

最佳答案

  1. 将网格中 SelectedItem 属性的绑定(bind)添加到您的 ViewModel
  2. 将按钮的 Command 属性的绑定(bind)添加到 ViewModel 中的命令
  3. 在 ViewModel 中实现 Command.Executed 方法并使用 Selected item 属性获取数据。

关于wpf - 如何在wpf中编辑数据网格中的选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28191766/

相关文章:

wpf - 如何在XAML中引用图像资源?

silverlight - 如何在编程 XAML 定义中定义按钮单击处理程序

apache-flex - 如何使用 Flex Spark 数据网格显示多行列标题?

apache-flex - 在 datagrid flex 中创建一个 "total"列

c# - 如何按照 MVVM 模式绑定(bind)整个数据网格以查看 MVVM

c# - DataGrid 添加行但文本不可见

wpf - MVVMLight 中的异常处理

wpf - MVVM 中的大型模型集合

c# - 如何将按钮命令绑定(bind)到主窗口命令

c# - Wpf 置于最前面