//前台界面
<Window x:Class="Demo.DataGrid"
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:Demo"
mc:Ignorable="d"
Title="DataGrid" Height="550" Width="800">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="156*"/>
<ColumnDefinition Width="241*"/>
</Grid.ColumnDefinitions>
<TabControl x:Name="tabControl3" Margin="0,0,0,0" Grid.ColumnSpan="2">
<TabItem Header="选项卡一" Width="75">
<StackPanel Margin="0,0,0,-9">
<DataGrid x:Name="dgStudent" CanUserAddRows="False" AutoGenerateColumns="False" CanUserSortColumns="False" Height="450" Margin="0,0,0,0">
<DataGrid.Columns>
<DataGridTemplateColumn Width=".1*" >
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="姓名" />
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding Name,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"></TextBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Width=".1*" >
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="班级" />
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox DisplayMemberPath = "GradeName" SelectedValuePath = "GradeID" SelectedValue="{Binding Path=Grade,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"
ItemsSource="{Binding Path=GradeItems}"></ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
<Button Name="btnAdd" Content="新增" Width="90" Height="25" Margin="80,5,0,0" Click="BtnAdd_Click"></Button>
<Button Name="btnDelete" Content="删除" Width="90" Height="25" Margin="280,-25,0,0" Click="BtnDelete_Click"></Button>
<Button Name="btnConfirm" Content="确认" Width="90" Height="25" Margin="480,-25,0,0" Click="BtnConfirm_Click"></Button>
</StackPanel>
</TabItem>
</TabControl>
</Grid>
</Window>
//后台代码
/// <summary>
/// DataGrid.xaml 的交互逻辑
/// </summary>
public partial class DataGrid : Window
{
ObservableCollection<StudentModel> studentItems = new ObservableCollection<StudentModel>();
public DataGrid()
{
InitializeComponent();
AddRow();
dgStudent.ItemsSource = studentItems;
}
private void AddRow()
{
StudentModel studentModel = new StudentModel()
{
Name = "",
Grade = 0,
GradeItems = new List<GradeItemModel>(),
};
studentModel.GradeItems.Add(new GradeItemModel() { GradeID=1,GradeName="1班"});
studentModel.GradeItems.Add(new GradeItemModel() { GradeID = 2, GradeName = "2班" });
studentModel.GradeItems.Add(new GradeItemModel() { GradeID = 3, GradeName = "3班" });
studentItems.Add(studentModel);
}
private void BtnAdd_Click(object sender, RoutedEventArgs e)
{
AddRow();
}
private void BtnDelete_Click(object sender, RoutedEventArgs e)
{
if (dgStudent.SelectedItems != null && dgStudent.SelectedItems.Count > 0)
{
for (int i = dgStudent.SelectedItems.Count - 1; i >= 0; i--)
{
studentItems.Remove(dgStudent.SelectedItems[i] as StudentModel);
}
}
}
private void BtnConfirm_Click(object sender, RoutedEventArgs e)
{
foreach (var item in studentItems)
{
MessageBox.Show("姓名:"+item.Name+",班级:"+item.Grade);
}
}
}
/// <summary>
/// 学生实体
/// </summary>
public class StudentModel
{
public string Name { get; set; }
public int Grade { get; set; }
public List<GradeItemModel> GradeItems { get; set; }
}
/// <summary>
/// 班级下拉框实体
/// </summary>
public class GradeItemModel
{
public int GradeID { get; set; }
public string GradeName { get; set; }
}