WPF DataGird 使用进阶(2)

实现效果一:

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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

flysh05

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值