我们正在使用 Telerik 版本 = 2012.2.725.1050
在这里,我在更改 gridview 列的 DisplayIndex 时面临一个 gridview 问题
单击列,当单击左键焦点和列完美移动但当我们单击右键时,列移动但焦点未移动焦点必须移动。在这里我添加我的示例项目代码
在此先感谢您的帮助
<UserControl x:Class="GridTest.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk">
<Grid x:Name="LayoutRoot" Background="White">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="50" />
</Grid.RowDefinitions>
<telerik:RadGridView HorizontalAlignment="Left" x:Name="grdFormList" VerticalAlignment="Top" Grid.Column="0" Grid.Row="0" />
<StackPanel Orientation="Horizontal" Grid.Column="0" Grid.Row="1">
<Button Content="Left" Height="23" HorizontalAlignment="Left" Name="btnleft" Width="75" Margin="5,0,0,0" Click="btnleft_Click" />
<Button Content="Right" Height="23" HorizontalAlignment="Left" Name="btnright" Width="75" Margin="5,0,0,0" Click="btnright_Click" />
</StackPanel>
</Grid>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Telerik.Windows.Controls;
using Telerik.Windows.Controls.GridView;
using Telerik.Windows;
using System.ComponentModel;
using System.Globalization;
using System.Threading;
namespace GridTest
{
public partial class MainPage : UserControl
{
public GridViewCellBase ClickedCell { get; set; }
public MainPage()
{
InitializeComponent();
this.grdFormList.AddHandler(GridViewCellBase.MouseLeftButtonDownEvent, new MouseButtonEventHandler(MouseDownOnCell), true);
grdFormList.Columns.Clear();
for (Int32 attributelength = 0; attributelength < 10; attributelength++)
{
GridViewColumn textColumn = new GridViewColumn();
// DataGridTextColumn textColumn = new DataGridTextColumn();
textColumn.Header = string.Format("Column{0}", attributelength + 1);
textColumn.UniqueName = string.Format("Uname{0}", attributelength + 1);
textColumn.MinWidth = 5;
textColumn.Width = 100;
grdFormList.Columns.Add(textColumn);
}
}
private void MouseDownOnCell(object sender, MouseEventArgs args)
{
if (((UIElement)args.OriginalSource).ParentOfType<GridViewCellBase>() != null)
{
var aa = ((GridViewHeaderRow)(((GridViewCellBase)((UIElement)args.OriginalSource).ParentOfType<GridViewCellBase>()).ParentOfType<GridViewHeaderRow>())).Cells;
for (int i = 0; i < aa.Count; i++)
{
((GridViewCellBase)aa[i]).Background = new SolidColorBrush(Colors.Transparent);
}
this.ClickedCell = null;
this.ClickedCell = (GridViewCellBase)((UIElement)args.OriginalSource).ParentOfType<GridViewCellBase>();
LinearGradientBrush brush = new LinearGradientBrush();
brush.StartPoint = new Point(0.5, 0);
brush.EndPoint = new Point(0.5, 1);
GradientStop g1 = new GradientStop();
g1.Color = Color.FromArgb(255, 227, 153, 54);
brush.GradientStops.Add(g1);
GradientStop g2 = new GradientStop();
g2.Color = Color.FromArgb(255, 254, 211, 125);
brush.GradientStops.Add(g2);
((GridViewCellBase)((UIElement)args.OriginalSource).ParentOfType<GridViewCellBase>()).Background = brush;
}
}
private void btnleft_Click(object sender, RoutedEventArgs e)
{
if (ClickedCell != null)
{
if (ClickedCell.Column != null)
{
int i = ClickedCell.Column.DisplayIndex;
if (i >= 1)
{
ClickedCell.Column.DisplayIndex = i - 1;
}
}
}
}
private void btnright_Click(object sender, RoutedEventArgs e)
{
if (ClickedCell != null)
{
if (ClickedCell.Column != null)
{
int k = ClickedCell.Column.DisplayIndex;
if (k <= grdFormList.Columns.Count - 1)
{
ClickedCell.Column.DisplayIndex = k + 1;
}
}
}
}
}
}