代码之家  ›  专栏  ›  技术社区  ›  Vanghern

“Enter”键未离开RadGridView中的单元格

  •  1
  • Vanghern  · 技术社区  · 6 年前

    在我的项目中,我面临着类似的问题,即“回车”键,在单元格中创建新行,而不是移动到下一行。

    我当前的telerik版本是2018.1.122.45,默认情况下,预期行为是在按下“回车”键后离开手机(根据telerik文档和帮助台)。

    然而,在我的例子中,它总是在正在编辑的单元格中生成新行。 我使用的是Visual Studio 2013主题,我对RadGridView的实现是正确的,我已经将我的RadGridView粘贴到项目中,我从telerik支持部门获得,在那里,Enter按预期工作。此外,他们已经将我的RadGridView实现粘贴到了他们的项目中,它也正常工作。

    有没有人遇到过类似的问题?我正在寻找解决方案,因为我无法追踪这个问题的来源(即使有teleriks的帮助)。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Vanghern    6 年前

    我已经找到了这个问题和其他风格问题的解决方案。以telerik文档(f.e。 https://docs.telerik.com/devtools/wpf/controls/radgridview/styles-and-templates/styling-a-row )有一些文档中未提及的问题。

    <Style TargetType="telerik:GridViewRow">
       <Setter Property="Background" Value="Red"/>
       <Setter Property="Foreground" Value="White"/>
    </Style>
    

    这是实现风格最简单的例子之一。我的情况是:

    <Style TargetType="telerik:GridViewCell"
                   x:Key="IloscNormalStyle"
                   BasedOn="{StaticResource GridViewCellStyle}">
                <Setter Property="Background"
                        Value="#c3d8c7" />
                <Setter Property="Foreground"
                        Value="Black" />
    
    </Style>
    

    而且效果很好。最大的问题是,它完全忽略了项目的已实现主题及其所有行为,例如,选择行为、回车键、边框等。为了告诉样式不要忽略已实现主题,我需要在样式中插入以下代码:

    <Style.Triggers>
                    <DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=telerik:GridViewRow}}"
                                 Value="True">
                        <Setter Property="Background"
                                Value="{Binding Background}" />
                    </DataTrigger>
    </Style.Triggers>
    

    这最终使我的风格达到了预期的效果。完整样式代码:

    <Style TargetType="telerik:GridViewCell"
                   x:Key="IloscNormalStyle"
                   BasedOn="{StaticResource GridViewCellStyle}">
                <Setter Property="Background"
                        Value="#c3d8c7" />
                <Setter Property="Foreground"
                        Value="Black" />
                <Style.Triggers>
                    <DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=telerik:GridViewRow}}"
                                 Value="True">
                        <Setter Property="Background"
                                Value="{Binding Background}" />
                    </DataTrigger>
                </Style.Triggers>
    </Style>
    

    我认为这是telerik(甚至WPF)的一个主要问题,但这两行代码解决了自定义单元格/行样式的大多数问题。