【问题标题】:WPF Toolkit Datagrid , Styling the SelectorAllWPF 工具包数据网格,为 SelectorAll 设置样式
【发布时间】:2012-03-01 18:45:13
【问题描述】:

我想为这个选择所有行的 Datagrid 的左上角元素设置样式,但我不知道怎么做。有没有人给我一个例子,或者有没有人知道我需要为哪个元素设置样式?

我的 Datagrid 来自 WPF Toolkit 顺便说一句。

【问题讨论】:

    标签: c# wpf xaml datagrid wpftoolkit


    【解决方案1】:

    首先,我建议您更新到 .net 4.0 以便能够使用 WPF dataGrid 而无需安装 WPFToolkit。

    现在至于你的问题,你必须为你的数据网格设置一个样式,并在样式、模板或资源中放置这种代码:

        <Style TargetType="{x:Type Button}" x:Key="{ComponentResourceKey ResourceId=DataGridSelectAllButtonStyle, TypeInTargetAssembly={x:Type DataGrid}}">
            <EventSetter Event="PreviewMouseDown" Handler="SelectAllButtonPreviewMouseDownHandler" />
            <EventSetter Event="PreviewMouseUp" Handler="SelectAllButtonPreviewMouseUpHandler" />
            <Setter Property="ToolTip" Value="{Binding SelectAllButtonToolTip, RelativeSource={RelativeSource AncestorType=DataGrid}}" />
            <Setter Property="Content" Value="{Binding SelectAllButtonContent, RelativeSource={RelativeSource AncestorType=DataGrid}}" />
            <Setter Property="Focusable" Value="False" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Button}">
                        <Grid Background="Transparent" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
                            <Polygon Name="Arrow"
                                     HorizontalAlignment="Right"
                                     VerticalAlignment="Bottom"
                                     Margin="0,0,3,3"
                                     Points="0,9 9,9 9,0"
                                     Fill="Black"
                                     Opacity="0.15"
                                     Visibility="Collapsed"/>
                            <ContentPresenter Name="ContentSite" />
                        </Grid>
                        <ControlTemplate.Triggers>
                            <Trigger Property="Content" Value="{x:Null}">
                                <Setter TargetName="ContentSite" Property="Visibility" Value="Collapsed"/>
                                <Setter TargetName="Arrow" Property="Visibility" Value="Visible"/>
                            </Trigger>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter TargetName="Arrow" Property="Opacity" Value="0.75"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
            </Setter.Value>
         </Setter>
        </Style>
    

    (这是我的一些代码的示例,我将其放入 MyDataGrid.Resources,MyDataGrid 是派生自 DataGrid 的类)

    编辑:重要的部分当然是按钮样式声明器中的x:Key="{ComponentResourceKey ResourceId=DataGridSelectAllButtonStyle, TypeInTargetAssembly={x:Type DataGrid}}"

    【讨论】:

    • 我已经有了 .net 4.0 框架。尽管如此,WPF Toolkit Datagrid 更强大,不是吗?
    • 实际上,没有。完全一样。 WPFToolKit 只允许您预览下一个 .net 版本中的内容,例如 DataGrid,它不在 .net 3.5 框架中,但已添加到 .net 4.0 版本中(呈现 WPFToolkit 的使用在这种情况下没有实际意义)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-19
    • 2010-12-13
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    • 2010-10-07
    相关资源
    最近更新 更多