WPF DataGrid入門示例
阿新 • • 發佈:2020-12-23
一、新增,刪除、插入行
<Window x:Class="WpfApp1.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:local="clr-namespace:WpfApp1" mc:Ignorable="d" Title="MainWindow" Height="450" Width="800"> <Grid> <DataGrid x:Name="myDataGrid" AutoGenerateColumns="False" CanUserAddRows="False"> <DataGrid.ContextMenu> <ContextMenu Name="myDataGridContexMenu" StaysOpen="true" Background="White"> <MenuItem Header="新增" Click="AddDataGrid_Click" /> <MenuItem Header="刪除" Click="DeleteDataGrid_Click" /> <MenuItem Header="插入" Click="InsertDataGrid_Click"/> </ContextMenu> </DataGrid.ContextMenu> <DataGrid.Columns> <DataGridTextColumn Width ="*" Header="姓名" Binding="{Binding Name,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" /> <DataGridTextColumn Width ="*" Header="性別" Binding="{Binding Gender,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" /> <DataGridTextColumn Width ="*" Header="年齡" Binding="{Binding Age,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" /> </DataGrid.Columns> </DataGrid> </Grid> </Window>
using System; using System.Collections.ObjectModel; using System.Windows; using System.Windows.Controls; namespace WpfApp1 { /// <summary> /// MainWindow.xaml 的互動邏輯 /// </summary> public partial class MainWindow : Window { public ObservableCollection<RegisterInformation> registerInformation = new ObservableCollection<RegisterInformation>(); public MainWindow() { InitializeComponent(); myDataGrid.ItemsSource = registerInformation;//繫結源資訊 } //刪除選中的行 private void DeleteDataGrid_Click(object sender, RoutedEventArgs e) { while (myDataGrid.SelectedIndex != -1) registerInformation.RemoveAt(myDataGrid.SelectedIndex); } //插入行 private void InsertDataGrid_Click(object sender, RoutedEventArgs e) { if (myDataGrid.SelectedIndex == -1) return; registerInformation.Insert(myDataGrid.SelectedIndex, new RegisterInformation { }); myDataGrid.SelectedIndex = -1;//不選中任何行 } //新增行 private void AddDataGrid_Click(object sender, RoutedEventArgs e) { registerInformation.Add(new RegisterInformation()); } } //登記資訊 public class RegisterInformation { public string Name { get; set; }//姓名 public string Gender { get; set; }//性別 public string Age { get; set; }//年齡 } }後臺程式碼