“输入”键不在RadGridView中留下单元格

时间:2018-02-09 14:54:59

标签: c# wpf telerik telerik-grid radgridview

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

我当前的telerik版本是2018.1.122.45,默认情况下,按“Enter”键(根据telerik文档和帮助台),预期的行为是离开单元格。

但是,在我的情况下,它总是在单元格中编辑新行。 我正在使用Visual Studio 2013主题,我的RadGridView实现是正确的,我已将我的RadGridView粘贴到项目中,我从telerik支持获得,并且在那里,Enter正在按预期工作。此外,他们已将我的RadGridView实现粘贴到他们的项目中,它也正常工作。

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

1 个答案:

答案 0 :(得分:0)

我找到了解决此问题的方法,以及其他样式问题。在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)的一个主要问题,但是这几行代码解决了自定义单元格/行样式的大部分问题。