首页 > 其他分享 >WPF开发中遇到的新知识 -- 6

WPF开发中遇到的新知识 -- 6

时间:2022-09-25 11:22:39浏览次数:49  
标签:需要 滚动 表格 -- 知识 DataGrid WPF

DataGrid 的简单使用

因为我只需要一个简单的表格展示数据,而操作数据我是放在了Button中,所以我需要关闭 DataGrid 本身自带的一些操作数据的功能,以下都是需要关闭的

  • RowHeaderWidth
  • AutoGenerateColumns
  • CanUserResizeColumns
  • CanUserResizeRows
  • IsReadOnly
  • CanUserAddRows
  • CanUserDeleteRows

这个属性可以让表格滚动起来比较自然,默认是按照每行来滚动的,现在是按照像素滚动

  • VirtualizingPanel.ScrollUnit

表格需要先定义列,一般我使用的是 DataGridTextColumnDataGridTemplateColumn 这两种,一个是单纯的文本展示,一种是模板,可以在内部填充需要的控件

<DataGrid Grid.Row="1" ItemsSource="{Binding DataList}" Margin="5 0"
                      VirtualizingPanel.ScrollUnit="Pixel"
                      RowHeaderWidth="0"
                      AutoGenerateColumns="False"
                      CanUserResizeColumns="False"
                      CanUserResizeRows="False"
                      IsReadOnly="True"
                      CanUserAddRows="False"
                      CanUserDeleteRows="False">

    <DataGrid.Columns>
        <DataGridTextColumn Header="规则名称" Width="80" Binding="{Binding Name}">
            <DataGridTextColumn.ElementStyle>
                <Style TargetType="TextBlock">
                    <Setter Property="HorizontalAlignment" Value="Center" />
                    <Setter Property="VerticalAlignment" Value="Center" />
                </Style>
            </DataGridTextColumn.ElementStyle>
        </DataGridTextColumn>

        <DataGridTemplateColumn Header="线段名称" Width="*">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <ListBox 
                        BorderThickness="0"
                        ItemContainerStyle="{StaticResource ListBoxItemStyle1}"
                        ItemsSource="{Binding ActionRules}">
                        
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <TextBlock >
                                    <TextBlock.Text>
                                        <MultiBinding Converter="{StaticResource lineToNameConverter}">
                                            <Binding Path="Line.StartPoint"/>
                                            <Binding Path="Line.EndPoint"/>
                                        </MultiBinding>
                                    </TextBlock.Text>
                                </TextBlock>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>

        <DataGridTemplateColumn Header="动作参数" Width="*">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <ListBox 
                        ItemContainerStyle="{StaticResource ListBoxItemStyle1}"
                        ItemsSource="{Binding ActionRules}"
                        BorderThickness="0">
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding ActionArgs}" />
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>

        <DataGridTemplateColumn Header="序号" Width="*">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <ListBox 
                        ItemContainerStyle="{StaticResource ListBoxItemStyle1}"
                        ItemsSource="{Binding ActionRules}" 
                        BorderThickness="0">
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding Index}" />
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>

        <DataGridTemplateColumn Header="操作" Width="50">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Button Content="删除"
                            Command="{Binding DataContext.DeleteCommand, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=DataGrid}}"
                            CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=DataGrid},Path=SelectedItem}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

标签:需要,滚动,表格,--,知识,DataGrid,WPF
From: https://www.cnblogs.com/huangwenhao1024/p/16727484.html

相关文章

  • 软件测试
    什么是软件测试?在规定条件下对程序进行操作,从而发现问题,对软件质量进行评估的过程。软件测试的目的以最少的人力,物力和时间找到软件中的缺陷,并修改,从而避免商业风险。......
  • WPF开发中遇到的新知识 -- 8
    Prism对话框移除最大化最小化和关闭目的:在弹出的对话框中,不需要最大化,最小化以及关闭按钮,自定义两个按钮,用作确认提交和取消提交方法:在Prism中找到的方法,直接在UserCont......
  • 第四章实例
    实例4                              ......
  • 95-2.Hive史诗级调优大全_ev
                  ......
  • 哈希表
    简介散列表(Hashtable,也叫哈希表),是根据关键码值(Keyvalue)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个......
  • 2022-2023-1 20221317《计算机基础与程序设计》第二周学习总结
    作业信息这个作业属于哪个课程:首页-2022-2023-1-计算机基础与程序设计-北京电子科技学院-班级博客-博客园(cnblogs.com)这个作业的要求在:2022-2023-1《计算......
  • RMAN-08137
    RMAN-08137:warning:archivedlognotdeleted,neededforstandbyorupstreamcaptureprocessarchivedlogfilename=+ARCH/MARC/ARCHIVELOG/2022_09_21/thread_2_......
  • 对象切片
    C++支持将对象储存在栈上,但很多情况,对象不能,或不应该存储在栈上。比如:对象很大对象的大小在编译时不能确定对象是函数的返回值,但由于特殊的原因,不应使用对象的值返回......
  • day-3 jdk的安装与Java环境的配置。(补发,昨天实验室关门了qaq我没钥匙)
    卸载jdk删除Java的安装目录删除系统高级设置中环境变量的Java—home删除path中Java相关的目录cmd中查看Java-version 安装jdk下载jdk版本记住安装......
  • 牛客网-SQL专项训练23
    ①假设创建新用户nkw,现在想对于任何IP的连接,仅拥有user数据库里面的select和insert权限,则列表语句中能够实现这一要求的语句是(B) 解析:考察知识点-数据库授权命令:GRANT<......