1. 程式人生 > 實用技巧 >WPF DataGrid入門示例

WPF DataGrid入門示例

一、新增,刪除、插入行

<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; }//年齡
    }
}
後臺程式碼