Telerik WPF GridView阻止聚焦按钮单击

Telerik WPF GridView阻止聚焦按钮单击,wpf,telerik-grid,Wpf,Telerik Grid,我有一个radgridview,其中一列是一个编辑按钮,用于重定向页面,其余的列从我的源代码进行数据绑定 我的问题是,要想第一次按特定行上的edit按钮,用户基本上必须按两次,因为出于某种原因,第一次单击会首先将整个gridview聚焦到视图中 只有当整个gridview不适合视图时才会发生这种情况,因此我猜它会在允许我按下编辑按钮之前尽可能地自动适应自己-如果我按下任何静态不可编辑字段,则不会发生这种情况-仅按下编辑按钮 <telerik:RadGridView Name="radGri

我有一个radgridview,其中一列是一个编辑按钮,用于重定向页面,其余的列从我的源代码进行数据绑定

我的问题是,要想第一次按特定行上的edit按钮,用户基本上必须按两次,因为出于某种原因,第一次单击会首先将整个gridview聚焦到视图中

只有当整个gridview不适合视图时才会发生这种情况,因此我猜它会在允许我按下编辑按钮之前尽可能地自动适应自己-如果我按下任何静态不可编辑字段,则不会发生这种情况-仅按下编辑按钮

<telerik:RadGridView Name="radGridView" VerticalAlignment="Top"
                     AutoGenerateColumns="False" 
                     ValidatesOnDataErrors="None" IsReadOnly="True"
                     ShowColumnSortIndexes="True" 
                     CanUserFreezeColumns="False" 
                     ItemsSource="{Binding PagedSource, ElementName=radDataPager}" >

    <telerik:RadGridView.Columns>

        <telerik:GridViewColumn Header="Edit">
            <telerik:GridViewColumn.CellTemplate>
                <DataTemplate>
                    <Button Content="Edit" Style="{StaticResource HyperLinkButtonStyle}"
                            Click="EditButton_Click" />
                </DataTemplate>
            </telerik:GridViewColumn.CellTemplate>
        </telerik:GridViewColumn>

        <telerik:GridViewDataColumn DataMemberBinding="{Binding Organization}" Header="Organization"/>
        <telerik:GridViewDataColumn DataMemberBinding="{Binding VisitDate, StringFormat=d}" Header="Visit Date"/>
        <telerik:GridViewDataColumn DataMemberBinding="{Binding Location}" Header="Location"/>
        <telerik:GridViewDataColumn DataMemberBinding="{Binding Address}" Header="Address"/>
        <telerik:GridViewDataColumn DataMemberBinding="{Binding ContactPersonName}" Header="Contact Name"/>
        <telerik:GridViewDataColumn DataMemberBinding="{Binding ContactPersonEmail}" Header="Contact E-mail"/>
        <telerik:GridViewDataColumn DataMemberBinding="{Binding ContactMobileNumberConcatenate}" Header="Contact Mobile Number"/>
        <telerik:GridViewDataColumn DataMemberBinding="{Binding ContactHomeNumberConcatenate}" Header="Contact Home Number"/>
        <telerik:GridViewDataColumn DataMemberBinding="{Binding ContactOfficeNumberConcatenate}" Header="Contact Office Number"/>
        <telerik:GridViewDataColumn DataMemberBinding="{Binding ContactFaxNumberConcatenate}" Header="Contact Fax Number"/>

    </telerik:RadGridView.Columns>

</telerik:RadGridView>


当我按下网格内的编辑按钮时,有没有办法防止这种焦点发生?或者我是否因为某种原因遗漏了其他内容?问题是我使用了datatemplate中的一个按钮作为

<Button Content="Edit" Style="{StaticResource HyperLinkButtonStyle}" Click="EditButton_Click" />

该按钮的某些特性使得gridview必须首先将自身聚焦到视图中,然后在屏幕上无法完全显示的情况下,单击该按钮将触发单击事件

最后,我做了一个变通办法,简单地使用telerik标签并给它一个MouseLeftButtonDown事件

<telerik:Label Content="Edit" TouchDown="EditButton_Click" MouseLeftButtonDown="EditButton_Click" Style="{StaticResource HyperLinkStyle}"/>

很确定你也可以使用普通的标签

HyperLinkStyle只是一种使标签带下划线并赋予其颜色和悬停状态的样式

<UserControl.Resources>
        <Style x:Key='HyperLinkStyle' TargetType='telerik:Label'>
            <Setter Property='Template'>
                <Setter.Value>
                    <ControlTemplate  TargetType='telerik:Label'>
                        <TextBlock  TextDecorations='Underline'>
                             <ContentPresenter TextBlock.FontFamily='Segoe UI' TextBlock.FontSize='13'/>
                        </TextBlock>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
            <Setter Property='Foreground' Value='#195AE0' />
            <Style.Triggers>
                <Trigger Property='IsMouseOver' Value='true'>
                    <Setter   Property='Foreground'    Value='Red' />
                    <Setter Property='Cursor' Value='Hand' />
                </Trigger>
            </Style.Triggers>
        </Style>
    </UserControl.Resources>

如果按钮对您不重要,您还可以更改相应的属性:

<Button Focusable="False" Content="Edit" Style="{StaticResource HyperLinkButtonStyle}" Click="EditButton_Click"/>

我确实尝试通过按钮重新创建您的场景,但在第一次单击时就获得了焦点。你能解释一下你的问题吗。