我在使用很多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)
{
}
}
答案 0 :(得分:0)
终于找到了我自己。 这很简单。
private void Delete_Click(object sender, RoutedEventArgs e)
{
dataset.foodSupplier.DefaultView.Delete(foodSupplierDataGrid.SelectedIndex);
this.DataContext = dataset.foodSupplier.DefaultView;
}