WPF DataGrid HeaderTemplate 神秘填充

2023-12-05

我将一个带有图像的按钮放置在 DataGrid 列的标题中。单元格模板也只是一个带有图像的简单按钮。

<my:DataGridTemplateColumn>
    <my:DataGridTemplateColumn.HeaderTemplate>
        <DataTemplate>
            <Button ToolTip="Add New Template" Name="AddNewTemplate" Click="AddNewTemplate_Click">
                <Image Source="../Resources/add.png"/>
            </Button>
        </DataTemplate>
    </my:DataGridTemplateColumn.HeaderTemplate>
    <my:DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Button ToolTip="Edit Template" Name="EditTemplate" Click="EditTemplate_Click" Tag="{Binding}">
                <Image Source="../Resources/pencil.png"/>
            </Button>
        </DataTemplate>
   </my:DataGridTemplateColumn.CellTemplate>
</my:DataGridTemplateColumn>

渲染时,标题仅在右侧有大约 10-15px 的填充,这会导致单元格明显以该宽度渲染,从而使单元格按钮两侧都有空白空间。作为一个像素完美主义者,这让我很恼火。我最初认为这是排序时显示的箭头的空间,但我在整个 DataGrid 和列上显式禁用了排序。

这是一张图片:http://img716.imageshack.us/img716/1787/68487749.png

我认为这是从按钮的父元素中填充的。有谁知道消除它的方法吗?


See:

  • http://img704.imageshack.us/i/23206794.png/
  • http://img229.imageshack.us/i/65917762.png/

解决方案:

<my:DataGrid.Resources>
    <Style x:Key="addHeader" TargetType="{x:Type myp:DataGridColumnHeader}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type myp:DataGridColumnHeader}">
                    <Button ToolTip="Add New Template" Name="AddNewTemplate" Click="AddNewTemplate_Click" Margin="4">
                        <Image Source="../Resources/add.png"/>
                    </Button>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</my:DataGrid.Resources>
<my:DataGrid.Columns>
    <my:DataGridTemplateColumn HeaderStyle="{StaticResource addHeader}">
        <my:DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <Button ToolTip="Edit Template" Name="EditTemplate" Click="EditTemplate_Click" Tag="{Binding}">
                    <Image Source="../Resources/pencil.png"/>
                </Button>
            </DataTemplate>
        </my:DataGridTemplateColumn.CellTemplate>
    </my:DataGridTemplateColumn>
</my:DataGrid.Columns>

Snoop来救援!

现在您更新了问题,我在中发现了一个有趣的代码DataGridHeaderBorder.cs:

   protected override Size ArrangeOverride(Size arrangeSize)
   {
     //...
     if (padding.Equals(new Thickness()))
     {
       padding = DefaultPadding;
     }
     //...
     child.Arrange(new Rect(padding.Left, padding.Top, childWidth, childHeight));
   }

其中 DefaultPadding 不为 0...即使他们不使用标准 Padding,他们也会稍微移动孩子。

如何解决这个问题?也许为表头编写自己的模板就能解决问题。或者您可以尝试为图像设置负边距。这两种方法都不喜欢。但我还找不到更好的东西。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF DataGrid HeaderTemplate 神秘填充 的相关文章

  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • 枚举扩展方法

    在vs2008中 是否可以编写适用于任何枚举的扩展方法 我知道您可以针对特定枚举编写扩展方法 但我希望能够使用单个扩展方法对每个枚举进行处理 这可能吗 是的 只需针对基础进行编码Enum类型 例如 public static void So
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • 使用.Net/C# 计算集合的频率分布

    是否有一种快速 简单的方法来使用 Linq 或其他方式计算 Net 集合的频率分布 例如 任意长的 List 包含许多重复项 遍历列表并计算 跟踪重复次数的巧妙方法是什么 查找列表中重复项的最简单方法是将其分组 如下所示 var dups
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • 每次 TDbGrid 的选定位置更改时都会触发什么事件?

    我的项目中有一个 TDbGrid 每次更改所选行时我都试图触发一个事件 行中的任何更改都已经更新了链接到同一数据源的所有数据感知控件 但还需要进行其他更改 我需要一个事件处理程序 我认为 OnColEnter 会起作用 根据帮助文件 它在以
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • MySQL - 删除时外键在非空字段中设置为空

    这可能是一个微不足道的问题 但在外键约束方面我仍然有点笨拙 所以我想确定一下 假设我有一张桌子countries与田野country id PK 和name 和一张桌子cities与田野city id PK name and country
  • 同时移动2个表格

    我在这里有点卡住了 我试图同时移动 2 个表单 而不使用 OnMove LocationChanged Docking 等 与它们的位置交互的唯一方法是重写 WndProc 可能有帮助的是 表单 A 是表单 B 的所有者 因此 每当移动 A
  • 如何终止 PHP 会话?

    我正在编写一个社交网站 并且正在尝试找出 PHP 会话 在登录页面的顶部 我调用session destroy 在新用户正式注册为用户的页面和用户主页 我调用session start 当用户注销时 他们会链接到具有 session des
  • Reporting Services 将多个工作表导出到 Excel

    我目前正在构建一个 MS Reporting Services 报告 该报告可呈现为 Excel 我试图弄清楚如何设置报告 以便它在报告上创建数据的多个工作表 选项卡 据我所知 在报告中输入分页符会为您提供一个新的工作表 但是 有没有办法命
  • Javascript Array.prototype.filter() 不起作用

    我在客户端上运行这段代码来过滤事件列表 if res eventList filter function event const out res find function visibility return visibility ID e
  • 固件错误:Access-Control-Allow-Origin

    我正在调用 contextBroker 它给了我这个错误 Response to preflight request doesn t pass access control check No Access Control Allow Ori
  • 如何仅在Python中设置模块的日志记录级别?

    我在用logging info输出有关我的脚本正在执行的操作和我正在使用的信息logging basicConfig level logging INFO 启用此功能 和这个 logging basicConfig level loggin
  • 修改Python脚本批量转换目录下所有“WOFF”文件

    我一直在使用 GitHub 用户 hanikesn 见下文 编写的一个很棒的开源 python 脚本 该脚本通过命令行 Mac OS X 上的终端 将单个 WOFF 文件转换回 OTF 格式 现在 我将脚本拖放到终端 然后将 WOFF 文件
  • onActivityResult 中的 requestCode 错误

    我正在从我的片段开始一个新的活动 startActivityForResult intent 1 并希望在 Fragment 的父 Activity 中处理结果 Override protected void onActivityResul
  • 无法使用seaborn绘制双轴

    当我尝试在 jupyter 笔记本中使用 seaborn 绘制双轴图时遇到问题重要提示 该代码在 Python 2 上运行得很好 使用 anaconda 升级到 Python 3 后 我收到以下错误消息 Users enyi opt ana
  • 使用 GROUP 或 RANK 中的 WHERE 的 SQL 语句

    我有一份销售快照 内容大约是35 000 行 我们将这些列称为 Sales Rep Account ID Total Contract Value Date 我需要将所有内容分组Sales Rep然后从那里选择Sales Rep s 排名前
  • Underscore.js _.tap() 函数什么是方法链?

    Underscore js 文档解释说 tap 函数 点击 到方法链中 http underscorejs org tap 我很难遵循他们的例子 chain 1 2 3 200 filter function num return num
  • 如何在客户端导入socket.io - SOCKET.IO + NODE.JS

    我一直在尝试创建一个在线游戏 但是当我尝试使用socket on or socket emit 它会出现一个错误 如下所示socket 我看过一些与此类似的帖子 并尝试了所有解决方案 但没有一个有效 我已经得到了io connect 工作并
  • 导航栏和导航按钮中的单独标题

    嘿嘿 我有一叠UIViewControllers 位于 a 的内部UINavigationController 通常标题 或导航项的标题 决定导航栏中显示的标题 显示在顶部 and所有导航按钮 例如导航栏本身的后退按钮 现在 我计划在导航栏
  • 如何从 iOS 中的 UIMenuController 中删除默认的 UIMenuItem?

    我想从 UIMenuController 中删除一些默认的 UIMenuItem 对象 例如 剪切 复制 等 怎么做 Thanks 对显示菜单的视图进行子类化 例如UIWebView UITextView 并覆盖 canPerformAct
  • 用户设置 - 安卓

    如何使应用程序中的更改持续存在 以便当应用程序重新启动时所有设置保持不变 例如 如果从应用程序中我选择了振动 那么当应用程序未运行时 如果我的手机处于铃声模式 当应用程序重新启动时 它将自身设置为振动 实际上有多种方法可以持久保存更改 这安
  • 使用 jquery 可拖动和可点击的输入元素

    我在可拖动的 div 中有一个输入元素 我的代码应该做以下事情 当我拖动输入元素时 应该拖动整个可拖动 div 已完成 当我单击输入元素时 我应该能够编辑文本 无法完成 那么 有人可以告诉我如何单击和编辑可拖动的输入元素的文本吗 这是我的完
  • WCF 传输安全弱点

    Lowy 撰写的 Programming WCF Services 第二版 第 10 章 第 512 页 Lowy谈到传输安全时说 它的主要缺点是它只能保证点对点的传输安全 这意味着当客户端直接连接到服务时 客户端和服务之间存在多个中介会使
  • Sikulix/Jython UAC 自动化

    我想知道是否有人有幸在安装程序自动化期间通过 UAC 弹出窗口实现自动化 我有一个现有的自动安装程序代码 但由于 Sikuli 在此步骤中未使用键盘 鼠标 它在 UAC 区域失败 有人在这里有运气吗 或者在 Jython 中没有办法做到这一
  • WPF DataGrid HeaderTemplate 神秘填充

    我将一个带有图像的按钮放置在 DataGrid 列的标题中 单元格模板也只是一个带有图像的简单按钮