【问题标题】:How to style the select all button in datagrid?如何在数据网格中设置全选按钮的样式?
【发布时间】:2014-07-11 10:12:34
【问题描述】:

我有一个 xaml 数据网格定义,我已经设置了所有样式,但是我不知道如何设置数据网格角落的左上角按钮的样式,当您按下它时,它会作为“全选” .

例如,我可以像这样设置数据网格单元格的样式:

<Style TargetType="DataGridCell">...

那么我该如何设置全选按钮的样式呢?有类似的吗?

<Style TargetType="DataGridSelectAllButton">

?

【问题讨论】:

    标签: c# wpf xaml


    【解决方案1】:

    将此添加到您的资源中:

    <Style x:Key="{ComponentResourceKey ResourceId=DataGridSelectAllButtonStyle, TypeInTargetAssembly={x:Type DataGrid}}" TargetType="{x:Type Button}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    ...
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
    

    【讨论】:

    • 这似乎是最简单的方法,我尝试使用它在 DataGrid 的左上角放置一个“全选”复选框。不幸的是,启用 CheckBox 的唯一方法似乎是将 DataGrid 的 SelectionMode 属性设置为 Extended,这可能是不切实际的。如果有人有解决方法,请分享。
    【解决方案2】:

    是的,所以如果我们查看the docs 并在那里快速搜索“the button in the upper left corner of the DataGrid”,我们会在该页面的一半处找到ResourceId=DataGridSelectAllButtonStyle,并且在其模板示例的顶部。

    我会建议使用 Blend 来拆除像这样的控件部分,有时元素可能会被隐藏起来,而且只需右键单击并继续编辑模板直到找到你想要的内容,这非常方便需要而不是试图盲目地去做,这有时可能是一种真正的痛苦。另外,首先检查文档应该是最直观的想法。

    无论如何希望这会有所帮助,干杯。

    【讨论】:

    • 天哪,单是这种风格就比我的整个应用程序都要长。我只是想改变那个小按钮的背景颜色。是否可以在默认情况下将该模板中的所有内容保留为仅更改背景颜色而不必在我的 xaml 中包含东京电话簿?
    • 它已经存在于您的应用程序amigo中,您认为您的所有默认内容现在如何设置样式?
    • 哦,你知道你只是在看顶部的模板,对吧?你可以只针对x:Name="Border 不是示例中的所有内容,因为这是所有部分的所有模板放在一起
    猜你喜欢
    • 1970-01-01
    • 2012-07-29
    • 2012-03-07
    • 1970-01-01
    • 2010-11-28
    • 2013-06-08
    • 2011-05-28
    • 2021-11-27
    • 1970-01-01
    相关资源
    最近更新 更多