使用 WPF 中的样式设置 DataGridColumnHeader 的样式
您好,我正在尝试实现一种在 DataGrid 中过滤记录的方法。我的想法是将文本框放在每列的标题中。
我这样做取决于是否按下了 ToggleButton,但我在标题中应用样式的方式遇到了问题。
如果我像这样在 DataGridColumn 中应用样式:
<DataGridTextColumn>
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
(...)
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
它将完美地工作!
但是,如果尝试将其放入样式中,我会这样做:
<Style TargetType="{x:Type DataGridTextColumn}">
<Setter Property="Template">
<ControlTemplate>
(...)
</ControlTemplate>
</Setter>
</Style>
通过使用 ControlTemplate,我们将覆盖背景和 DataGridColumnHeader 的所有默认布局,但我不希望这样。我怎样才能做到这一点?
我真的很想这样做以避免 XAML 中的重复代码。
提前致谢!
Hi i am trying to implement a way to filter my records in a DataGrid. My idea is to put TextBoxes in the Header of each Column.
I am doing this depending if a ToggleButton is pressed or not, but i am having a problem in the way that i am applying the style in the Header.
If i apply the style inside the DataGridColumn like this:
<DataGridTextColumn>
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
(...)
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
It will work perfectly!
But if try to put this in a Style i am doing it like this:
<Style TargetType="{x:Type DataGridTextColumn}">
<Setter Property="Template">
<ControlTemplate>
(...)
</ControlTemplate>
</Setter>
</Style>
By using the ControlTemplate we will override the background and all the Default layout of DataGridColumnHeader and i don't want that. How i can i do this?
I am really tring to do this to avoid repeat code in XAML.
Thanks in advance!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您不使用DataTemplate方法的唯一原因是您想定义它一次(在某个中心位置),然后在多个位置(例如多个列)使用它,那么您可以移动该DataTemplate到资源部分,为其分配一个资源密钥并在您想要的任何地方使用它。
方法如下:
If the only reason you are not using the DataTemplate approach is because you want to define it once (at some central location) and then use it at multiple places (e.g. multiple columns), you can move that DataTemplate to the resources section, assign it a resource key and use it whereever you want.
Here's how: