Telerik WPF GridView可防止对按钮单击进行关注

时间:2013-12-16 15:22:01

标签: wpf telerik-grid

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

我的问题是,为了能够第一次按下特定行上的编辑按钮,用户基本上必须按两次,因为第一次点击由于某种原因首先将整个网格视图聚焦到视图中。

这只发生在整个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>

当我按下网格内的编辑按钮时,有没有办法防止这种焦点发生?或者我错过了其他的东西

2 个答案:

答案 0 :(得分:0)

出于某种原因问题是我在datatemplate中使用了一个按钮

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

关于Button的一些事情使得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>

答案 1 :(得分:0)

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

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