在DataGrid中为WPF浏览器应用程序删除行

时间:2015-06-25 03:58:52

标签: c# wpf xaml datagrid

我在使用很多WinForms之后尝试构建一个WPF浏览器应用程序。 我没有找到删除dataGrid中的行的方法。 更新和插入部分工作正常。 我已经阅读了很多关于ObservableCollection的答案,但我认为这不适合我的情况。

我试过这个:

foodSupplierDataGrid.Items.Remove(foodSupplierDataGrid.SelectedItem);

但它给出了一个错误。

使用ItemsSource时,操作无效。使用ItemsControl.ItemsSource访问和修改元素。

那我该怎么办?

XAML

<

<Page

    <Page.Resources>
        <local:larotis_general_testDataSet x:Key="larotis_general_testDataSet"/>
        <CollectionViewSource x:Key="foodSupplierViewSource" Source="{Binding foodSupplier, Source={StaticResource larotis_general_testDataSet}}"/>
    </Page.Resources>

    <Grid Background="#FF066E19" Margin="-463,-198,-465,-234">
        <dg:DataGrid x:Name="foodSupplierDataGrid" AutoGenerateColumns="True" EnableRowVirtualization="True" ItemsSource="{Binding}" Margin="296,134,288,224" RowDetailsVisibilityMode="VisibleWhenSelected" Loaded="foodSupplierDataGrid_Loaded" CanUserDeleteRows="True" />
        <Menu>
            ...
        </Menu>
        <Button x:Name="Delete" Content="Button" HorizontalAlignment="Left" Margin="933,836,0,0" VerticalAlignment="Top" Width="75" Click="Delete_Click"/>
    </Grid>


</Page>

背后的代码

public partial class Supplier : Page
{
        larotis_general_testDataSetTableAdapters.foodSupplierTableAdapter adapter = new larotis_general_testDataSetTableAdapters.foodSupplierTableAdapter();
        larotis_general_testDataSet dataset = new larotis_general_testDataSet();

public Supplier() { InitializeComponent(); } private void foodSupplierDataGrid_Loaded(object sender, RoutedEventArgs e) { adapter.Fill(dataset.foodSupplier); this.DataContext = dataset.foodSupplier.DefaultView; dataset.foodSupplier.foodSupplierRowChanged += new larotis_general_testDataSet.foodSupplierRowChangeEventHandler(SupplierRowModified); dataset.foodSupplier.foodSupplierRowDeleted += new larotis_general_testDataSet.foodSupplierRowChangeEventHandler(SupplierRowModified); } void SupplierRowModified(object sender, larotis_general_testDataSet.foodSupplierRowChangeEvent e) { adapter.Update(dataset.foodSupplier); } private void Delete_Click(object sender, RoutedEventArgs e) { } }

1 个答案:

答案 0 :(得分:0)

终于找到了我自己。 这很简单。

 private void Delete_Click(object sender, RoutedEventArgs e)
    {
         dataset.foodSupplier.DefaultView.Delete(foodSupplierDataGrid.SelectedIndex);
         this.DataContext = dataset.foodSupplier.DefaultView;
    }