WPF页面有个DataGrid列表,需要为在最后加一列操作列从而实现对每一行记录的自定义操作
- 页面xaml内容(样式组件引用的是metro.mahapps)
<DataGrid x:Name="stuList" ItemsSource="{Binding}" SelectionUnit="FullRow" Style="{StaticResource GridStyle}" AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=studentNo}" Width="auto" Header="学号" />
<DataGridTextColumn Binding="{Binding Path=studentName}" Width="auto" Header="学生姓名"/>
<DataGridTextColumn Binding="{Binding Path=gender}" Width="auto" Header="性别"/>
<DataGridTextColumn Binding="{Binding Path=clazz}" Width="auto" Header="班级" />
<DataGridTextColumn Binding="{Binding Path=age}" Width="auto" Header="年龄" />
<DataGridTextColumn Binding="{Binding Path=createTime}" Width="auto" Header="创建时间"/>
<DataGridTemplateColumn x:Name="dgOperate" Width="300" Header="操作" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<controls:Tile Name="btnSearch" Height="40" Width="80" Margin="20,0,0,0" Click="btnEdit_Click" HorizontalAlignment="Left" Style="{StaticResource FlatBtnStyle}">
<Label Style="{StaticResource ButtonFontStye}" FontSize="15" Content="编辑" />
</controls:Tile>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellStyle>
<Style TargetType="DataGridCell">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Background" Value="White"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGridTemplateColumn.CellStyle>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
- cs方法(编辑按钮操作)
private void btnEdit_Click(object sender, RoutedEventArgs e) {
StudentDto dto = taskList.SelectedItem as StudentDto;
if (dto == null) {
throw new UserMessage("请选择一条记录进行操作!");
}
// 。。。 此处自定义代码部分省略
}
- StudentDto实体类,只有几个基础字段,和xaml中字段一致,略