实现效果一:
DataGrid索引列显示小圆点,且文本可以编辑。
修改ID字段的数据绑定,创建数据模板:
<DataGridTemplateColumn Header="ID">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<WrapPanel>
<Ellipse Height="7" Width="7" Fill="Red" Margin="5,0">
</Ellipse>
<TextBlock Text="{Binding Id}"/>
</WrapPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Text="{Binding Id}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
实现效果二:
DataGrid时间字段,点击选择时,可弹出DataTimePicker
基本的数据绑定如下:
<!--<DataGridTextColumn Header="YEAR"
Binding="{Binding ReleaseDateTime,StringFormat=yyyy}"></DataGridTextColumn>-->
修改后的数据绑定方式,创建单元格编辑模板,选择时弹出DatePicker
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding ReleaseDateTime,StringFormat=yyyy}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<DatePicker SelectedDate="{Binding ReleaseDateTime}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
完整的XAML代码如下:
<Window x:Class="WpfApp2.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:WpfApp2"
xmlns:GenreEnum="clr-namespace:System;assembly=mscorlib"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Window.DataContext>
<local:Songs/>
</Window.DataContext>
<Window.Resources>
<ObjectDataProvider x:Key="objDataProvider" ObjectType="{x:Type GenreEnum:Enum}" MethodName="GetNames" >
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="local:Genre"/>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</Window.Resources>
<Grid>
<DataGrid FontSize="14" ItemsSource="{Binding songList}"
AutoGenerateColumns="False"
GridLinesVisibility="None"
>
<DataGrid.Columns>
<DataGridTemplateColumn Header="ID">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<WrapPanel>
<Ellipse Height="7" Width="7" Fill="Red" Margin="5,0">
</Ellipse>
<TextBlock Text="{Binding Id}"/>
</WrapPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Text="{Binding Id}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<!--<DataGridTextColumn Header="ID"
Binding="{Binding Id}"></DataGridTextColumn>-->
<DataGridTextColumn Header="SONG TITLE" Binding="{Binding Title}"/>
<DataGridTextColumn Header="ARTIST"
Binding="{Binding Artist}"></DataGridTextColumn>
<DataGridCheckBoxColumn Header="SOUNDTRACK"
Binding="{Binding IsSoundtrack}"></DataGridCheckBoxColumn>
<DataGridTextColumn Header="MOVIE TITLE"
Binding="{Binding MovieTitle}"></DataGridTextColumn>
<DataGridComboBoxColumn Header="GENRE" TextBinding="{Binding Genre}"
ItemsSource="{Binding Source={StaticResource objDataProvider}}"/>
<!--<DataGridTextColumn Header="YEAR"
Binding="{Binding ReleaseDateTime,StringFormat=yyyy}"></DataGridTextColumn>-->
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding ReleaseDateTime,StringFormat=yyyy}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<DatePicker SelectedDate="{Binding ReleaseDateTime}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridHyperlinkColumn Header="URL" Binding="{Binding URL}"></DataGridHyperlinkColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>