WPF 如何在实际折叠时设置 DataGrid.Group 标题文本

2023-12-01

我正在使用 WPF 应用程序,并且我使用以下方式对我的项目进行分组<DataGrid.GroupStyle>,我想知道当组折叠时如何设置标题文本。我正在将订单加载到分组网格中,当我折叠特定组时,我希望看到类似 Order : order number 的内容,因为更容易定位。现在我只看到订单数量,但如何添加文本:

<DockPanel>
   <TextBlock FontWeight="Bold" Text="{Binding Path=Name}" /> //+ some text
</DockPanel>

(另外,在我添加之后<DataGrid.Columns>因为我想手动添加我的列,垂直滑块突然出现在屏幕上,即使左侧或右侧没有更多项目,它看起来又糟糕又烦人,我怎样才能删除该滑块,我想保留我的数据网格列,因为我想要样式它们是我想要的,但我不想看到那个滑块:/?)

这是我的代码:

<Grid.ColumnDefinitions>
  <ColumnDefinition Width="10*" />
</Grid.ColumnDefinitions>

<DataGrid Grid.Column="0" RowHeaderWidth="0" CanUserAddRows="False" AutoGenerateColumns="False"  x:Name="datagrid1" Margin="10,150,8,50" Background="Transparent" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" ItemsSource="{Binding}">

  <DataGrid.Resources>
    <Style TargetType="{x:Type DataGridColumnHeader}">
      <Setter Property="Background" Value="Black"/>
      <Setter Property="Opacity" Value="0.5"/>
      <Setter Property="Foreground" Value="White"/>
      <Setter Property="HorizontalContentAlignment" Value="Center" />
      <Setter Property="FontSize" Value="15"/>
      <Setter Property="FontFamily" Value="Arial"/>
      <Setter Property="Height" Value="50"/>
    </Style>
  </DataGrid.Resources>

  <DataGrid.Columns>
    <DataGridTextColumn Binding="{Binding ProductName}"      Header="Title"      MinWidth="50"   FontSize="16"  FontFamily="Verdana" />
    <DataGridTextColumn Binding="{Binding Quantity}"       Header="Quantity"    MinWidth="30"   FontSize="16"  FontFamily="Verdana" />
    <DataGridTextColumn Binding="{Binding NumberOfOrder}"    Header="Order number"  MinWidth="30"   FontSize="16"  FontFamily="Verdana" />
    <DataGridTextColumn Binding="{Binding User}"          Header="User"         Width="*"     FontSize="16"   FontFamily="Verdana" />
  </DataGrid.Columns>

  <DataGrid.GroupStyle>
    <!-- Style for groups at top level. -->
    <GroupStyle>
      <GroupStyle.ContainerStyle>
        <Style TargetType="{x:Type GroupItem}">
          <Setter Property="Template">
            <Setter.Value>
              <ControlTemplate TargetType="{x:Type GroupItem}">
                <Expander IsExpanded="True">
                  <Expander.Header>
                    <DockPanel>
                      <TextBlock FontWeight="Bold" Text="{Binding Path=Name}" /> //I am wondering what does this line mean?
                    </DockPanel>
                  </Expander.Header>
                  <Expander.Content>
                    <ItemsPresenter />
                  </Expander.Content>
                </Expander>
              </ControlTemplate>
            </Setter.Value>
          </Setter>
        </Style>
      </GroupStyle.ContainerStyle>
    </GroupStyle>
  </DataGrid.GroupStyle>
</DataGrid>

P.S 数据网格底部垂直滑块的屏幕截图

enter image description here


我们需要一个Trigger这里如下所示,和一个IValueConverter查找组中的项目数:

<Expander.Style>
    <Style TargetType="Expander">
        <Style.Triggers>
            <Trigger Property="IsExpanded" Value="True">
                <Setter Property="Header">
                    <Setter.Value>
                        <DockPanel>
                            <TextBlock FontWeight="Bold" Text="{Binding Name}" />
                        </DockPanel>
                    </Setter.Value>
                </Setter>
            </Trigger>
            <Trigger Property="IsExpanded" Value="False">
                <Setter Property="Header">
                    <Setter.Value>
                        <DockPanel>
                            <TextBlock FontWeight="Bold">
                              <TextBlock.Inlines>
                                 <Run Text="{Binding Name}"/>
                                 <Run Text=" ( "/>
                                   <Run Text="{Binding Name, Converter={StaticResource ItemCountCnvKey}}" />
                                 <Run Text=" ) "/>
                              </TextBlock.Inlines>
                            </TextBlock>
                        </DockPanel>
                    </Setter.Value>
                </Setter>
            </Trigger>
        </Style.Triggers>
    </Style>
</Expander.Style>

物品计数转换器

public class ItemCountConverter : IValueConverter
{

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        CollectionViewGroup group = (CollectionViewGroup)value;            
        ReadOnlyObservableCollection<object> items = group.Items;
        return items.Count;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF 如何在实际折叠时设置 DataGrid.Group 标题文本 的相关文章

  • 在 C# 中创建具有单独列的分隔文本

    我一直在尝试在 C 中创建一个制表符限制的文本文件 以便数据正确显示在单独的列中 Firstname Lastname Age John Smith 17 James Sawyer 31 我尝试过 t 字符 但我得到的只是 Firstnam
  • VB.NET 相当于 C# 属性简写吗?

    是否有与 C 等效的 VB NET public string FirstName get set 我知道你能做到 Public Property name As String Get Return name ToString End Ge
  • 如何读取扩展文件属性/文件元数据

    因此 我按照教程使用 ASP net core 将文件 上传 到本地路径 这是代码 public IActionResult About IList
  • 如何检查QProcess是否正确执行?

    QProcess process sdcompare QString command sdcompare QStringList args sdcompare command sdcompare diff args sdcompare lt
  • 为 Visual Studio 2013 编译 Tesseract

    我正在尝试使用tesseract在 Visual Studio 2013 中 我在链接器 gt 输入 不是 libtesseract302 static lib 中使用 libtesseract302 lib 一切都正常 并且已编译并运行
  • 互斥体实现可以互换(独立于线程实现)

    所有互斥体实现最终都会调用相同的基本系统 硬件调用吗 这意味着它们可以互换吗 具体来说 如果我使用 gnu parallel算法 使用openmp 并且我想让他们称之为线程安全的类我可以使用boost mutex用于锁定 或者我必须编写自己
  • 单元测试一起运行时失败,单独运行时通过

    所以我的单元测试遇到了一些问题 我不能只是将它们复制并粘贴到这里 但我会尽力而为 问题似乎是 如果我一项一项地运行测试 一切都会按预期进行 但如果我告诉它一起运行测试 则 1 5 将通过 TestMethod public void Obj
  • 如何访问另一个窗体上的ListView控件

    当单击与 ListView 所在表单不同的表单中的按钮时 我试图填充 ListView 我在 Form1 中创建了一个方法以在 Form2 中使用 并将参数传递给 Form1 中的方法 然后填充 ListView 当我调试时 我得到了传递的
  • ASP.NET:获取自 1970 年 1 月 1 日以来的毫秒数

    我有一个 ASP NET VB NET 日期 我试图获取自 1970 年 1 月 1 日以来的毫秒数 我尝试在 MSDN 中寻找方法 但找不到任何东西 有谁知道如何做到这一点 从 NET 4 6 开始 该方法ToUnixTimeMillis
  • 将 Excel 导入到 Datagridview

    我使用此代码打开 Excel 文件并将其保存在 DataGridView 中 string name Items string constr Provider Microsoft Jet OLEDB 4 0 Data Source Dial
  • 在一个字节中存储 4 个不同的值

    我有一个任务要做 但我不知道从哪里开始 我不期待也绝对不想要代码中的答案 我想要一些关于该怎么做的指导 因为我感到有点失落 将变量打包和解包到一个字节中 您需要在一个字节中存储 4 个不同的值 这些值为 NAME RANGE BITS en
  • 上下文敏感与歧义

    我对上下文敏感性和歧义如何相互影响感到困惑 我认为正确的是 歧义 歧义语法会导致使用左推导或右推导构建多个解析树 所有可能的语法都是二义性的语言是二义性语言 例如 C 是一种不明确的语言 因为 x y 总是可以表示两个不同的事物 如下所述
  • HttpWebRequest 在第二次调用时超时

    为什么以下代码在第二次 及后续 运行时超时 代码挂在 using Stream objStream request GetResponse GetResponseStream 然后引发 WebException 表示请求已超时 我已经尝试过
  • 如何从main方法调用业务对象类?

    我已将代码分为业务对象 访问层 如下所示 void Main Business object public class ExpenseBO public void MakeExpense ExpensePayload payload var
  • .NET中的LinkedList是循环链表吗?

    我需要一个循环链表 所以我想知道是否LinkedList是循环链表吗 每当您想要移动列表中的 下一个 块时 以循环方式使用它的快速解决方案 current current Next current List First 电流在哪里Linke
  • C++ 密码屏蔽

    我正在编写一个代码来接收密码输入 下面是我的代码 程序运行良好 但问题是除了数字和字母字符之外的其他键也被读取 例如删除 插入等 我知道如何避免它吗 特q string pw char c while c 13 Loop until Ent
  • Server.MapPath - 给定的物理路径,预期的虚拟路径

    我正在使用这行代码 var files Directory GetFiles Server MapPath E ftproot sales 在文件夹中查找文件 但是我收到错误消息说 给定物理路径但虚拟路径 预期的 我对在 C 中使用 Sys
  • 如何在按钮单击时模拟按键 - Unity

    我对 Unity 中的脚本编写非常陌生 我正在尝试创建一个按钮 一旦单击它就需要模拟按下 F 键 要拾取一个项目 这是我当前的代码 在编写此代码之前我浏览了所有统一论坛 但找不到任何有效的东西 Code using System Colle
  • 线程和 fork()。我该如何处理呢? [复制]

    这个问题在这里已经有答案了 可能的重复 多线程程序中的fork https stackoverflow com questions 1235516 fork in multi threaded program 如果我有一个使用 fork 的
  • 防止在工厂方法之外实例化对象

    假设我有一个带有工厂方法的类 class A public static A newA Some code logging return new A 是否可以使用 a 来阻止此类对象的实例化new 那么工厂方法是创建对象实例的唯一方法吗 当

随机推荐

  • 连接到 Hive 时出错。Error:java.sql.SQLException: 找不到适用于 jdbc:hive2 的驱动程序:

    您好 我正在尝试从 Nodejs 连接到 hive 我用了https www npmjs com package jdbc安装 JDBC 我收到以下错误 错误 运行静态方法 java sql SQLException 时出错 没有合适的 找
  • 如何将谷歌字体连接到页面?

    我已经使用了 Google Fonts 中关于如何设置字体的建议 所以我做了以下动作 1 在页面添加此依赖 2 将CSS设置为body标签 html body font family Roboto sans serif background
  • Python/Scapy:仅嗅探传入数据包

    我可以在 Scapy 中仅嗅探传入数据包或仅嗅探传出数据包吗 无需在数据包字段上添加过滤器 简短的回答 不 Scapy 的嗅探功能不区分传入和传出的数据包 如果你想根据源mac进行过滤 你可以这样做 MYMAC 12 34 56 78 90
  • 如何创建每个点有两种颜色的散点图?

    我正在尝试绘制两个地面实况 and my在 matplotlib 中同时分类 目前 我只在应用后绘制真实情况tsne在特征空间上并使用以下代码添加边缘 from matplotlib collections import LineColle
  • 多维矩阵(/数组)的矩阵乘法 - 如何避免循环?

    我正在尝试使用包含要相乘的多个矩阵的数组来评估矩阵乘法 这可以通过使用 np dot 或 Py3 5 中的新 运算符 的两个矩阵轻松实现 但我正在努力扩展它以有效地评估我的多维数组 举个例子 假设我有形状为 5 3 3 的矩阵 A 和形状为
  • 样式表 HTML 定义中的 media="" 属性指的是什么?

    相信有些人已经看过以下内容 或者其他什么 但媒体属性实际上有什么作用呢 我创建了几个网站 但在链接样式表时从未使用过媒体属性 这是一个错误吗 谢谢 阿米特 w3可以最好地解释它 媒体类型与用于查看页面的媒体有关 如果有人正在打印该页面 pr
  • Cortex-A57可以双发出128位neon指令吗?

    Cortex A57 优化指南指出 大多数对 128 位向量数据进行操作的整数指令都可以双发出 第 24 页 整数基本 F0 F1 逻辑 F0 F1 执行吞吐量 2 然而 根据我们的内部 综合 基准测试 即使有大量可用的指令并行性 吞吐量似
  • C# 枚举到 postgres 枚举

    我目前正在使用 postgres 枚举 CREATE TYPE http action enum AS ENUM GET HEAD POST PUT DELETE CONNECT OPTIONS TRACE PATCH CREATE TAB
  • 在 Backbone.js 中实例化子视图时如何避免内存泄漏

    myView Backbone View extend event binding etc etc render function render some DOM anotherView Backbone View extend event
  • 使用 Java 从单个文件读取图像元数据

    我想从单个文件中读取图像元数据 我尝试了以下代码 http johnbokma com java obtaining image metadata html 当我运行它时 我得到build successful但什么也没发生 public
  • OS X Java .app 捆绑包无法打开其他应用程序?

    我为 OS X 编写了一个 Java SWT 应用程序 将其导出为 jar 并将其捆绑到 app 中 除了我的应用程序中的关键部分之外 一切都按预期工作 它需要打开其他应用程序 我试过了Runtime exec 也ProcessBuilde
  • 自动为条形图旁边的标签留出足够的空间

    我正在制作一个水平条形图ggplot2 标签位于条形右侧 如何为标签留出足够的空间 以免它们脱离图表 这个问题之前已经被问过很多次了 但我的问题是关于自动地 这意味着无需手动调整 条形图旁边的空间即可为标签留出足够的空间 该用例是一个闪亮的
  • shell 命令查找进程 ID 并附加到它?

    我想使用 ddd 附加到正在运行的进程 我手动执行的操作是 ps ax grep PROCESS NAME 然后我得到一个列表和 pid 然后输入 ddd PROCESS NAME THE PID 有没有一种方法可以直接输入一个命令 备注
  • ConstraintLayout:全屏居中视图,但限制宽度不与侧视图重叠

    我有一个类似组件实现的工具栏 在所有情况下我都遇到布局问题 它有一个左侧图标 一个标题和一个右侧菜单 按钮 我需要标题在全屏 或至少布局的整个宽度 上居中 但也不与其他组件重叠 因此标题的宽度必须受到左侧图标和右侧按钮的限制 我有两个中间解
  • IIS 中的 Comet 编程

    据说Comet编程不推荐使用IIS 如果这是真的 那么其他 Web 服务器如何能够通过 IIS 处理此问题 那么其他 Web 服务器还额外做了哪些事情来允许它们横向扩展呢 由于某种原因 这个神话仍然存在 当然可以使用 IIS 来完成此操作
  • 使用新格式字符串记录变量数据

    我使用 python 2 7 3 的日志记录工具 这个Python版本的文档说 日志记录包早于较新的格式化选项 例如 str format 和 string Template 支持这些较新的格式选项 我喜欢带有花括号的 新 格式 所以我正在
  • 无法连接到 graph.facebook.com 端口 443:网络无法访问

  • 如何在 FreeBSD 中调试 rc.d 脚本?

    我的里面有一个 bash 脚本 usr local etc rc d 应该运行 python 脚本 我运行布什脚本 service script name start 却什么也没发生 我如何调试该 rc d 脚本 我怎么知道发生了什么事 F
  • 如何在 Android Studio 中创建测试?

    刚刚下载了基于 Intellij Idea 的 Android Studio 如何创建测试 我注意到有一个创建测试模块的选项 但这似乎没有做任何事情 只使用 src 创建一个新项目 我还尝试按热键 CTRL AlT T 它允许在现有类上创建
  • WPF 如何在实际折叠时设置 DataGrid.Group 标题文本

    我正在使用 WPF 应用程序 并且我使用以下方式对我的项目进行分组