WPF Datagrid remove the addtional blank datatgridrow NewItemPlaceholderPosition.None
private void Window_Loaded(object sender, RoutedEventArgs e) { var children = mainGd.Children; foreach(var child in children) { var tempGd = child as DataGrid; if(tempGd!=null) { var editableView = tempGd.Items as IEditableCollectionView; editableView.NewItemPlaceholderPosition = NewItemPlaceholderPosition.None; } } }
//xaml <Window x:Class="WpfApp195.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:behavior="http://schemas.microsoft.com/xaml/behaviors" xmlns:local="clr-namespace:WpfApp195" Loaded="Window_Loaded" mc:Ignorable="d" WindowState="Maximized" Title="MainWindow" Height="450" Width="800"> <Grid x:Name="mainGd"> <DataGrid ItemsSource="{Binding BooksList,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" AutoGenerateColumns="False" > <behavior:Interaction.Triggers> <behavior:EventTrigger EventName="SelectionChanged"> <behavior:CallMethodAction MethodName="DG_SelectionChanged" TargetObject="{Binding}"/> </behavior:EventTrigger> </behavior:Interaction.Triggers> <DataGrid.Columns> <DataGridTextColumn Header="Id" Binding="{Binding Id}"/> <DataGridTextColumn Header="Id" Binding="{Binding Author}"/> <DataGridTextColumn Header="Id" Binding="{Binding ISBN}"/> <DataGridTextColumn Header="Id" Binding="{Binding Name}"/> <DataGridTextColumn Header="Id" Binding="{Binding Title}"/> <DataGridTextColumn Header="Id" Binding="{Binding Topic}"/> </DataGrid.Columns> </DataGrid> </Grid> </Window> //cs using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace WpfApp195 { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); var vm = new BookViewModel(); this.DataContext = vm; } private void Window_Loaded(object sender, RoutedEventArgs e) { var children = mainGd.Children; foreach(var child in children) { var tempGd = child as DataGrid; if(tempGd!=null) { var editableView = tempGd.Items as IEditableCollectionView; editableView.NewItemPlaceholderPosition = NewItemPlaceholderPosition.None; } } } } public class BookViewModel:INotifyPropertyChanged { public BookViewModel() { BooksList = new ObservableCollection<Book>(); for(int i=0;i<100000;i++) { BooksList.Add(new Book() { Id=i+1, Author=$"Author_{i+1}", ISBN=$"ISBN_{i+1}", Name=$"Name_{i+1}", Title=$"Title_{i+1}", Topic=$"Topic_{i+1}" }); } } public event PropertyChangedEventHandler PropertyChanged; public void OnPropertyChanged(string propName) { var handler = PropertyChanged; if(handler!=null) { handler(this, new PropertyChangedEventArgs(propName)); } } public void DG_SelectionChanged(object sender, SelectionChangedEventArgs e) { var dg = sender as DataGrid; if(dg!=null) { var editableCollection = dg.Items as IEditableCollectionView; if(editableCollection!=null) { editableCollection.NewItemPlaceholderPosition = NewItemPlaceholderPosition.None; } } var items = dg.Items; } #region Properties private ObservableCollection<Book> booksList; public ObservableCollection<Book> BooksList { get { return booksList; } set { if(value!=booksList) { booksList = value; OnPropertyChanged(nameof(BooksList)); } } } #endregion } public class Book { public int Id { get; set; } public string Author { get; set; } public string ISBN { get; set; } public string Name { get; set; } public string Title { get; set; } public string Topic { get; set; } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2019-07-04 C# based on PdfSharp to split pdf files and get MemoryStream C#基于PdfSharp拆分pdf,并生成MemoryStream