Hello,
I am using RadControls version 2012.2.607.40 for WPF 4.
I am having an issue with the scrolling of a RadGridView. The problem is that under certain circumstances, the RadGridView scrolls to the top for no apparent reason. The following xaml and code-behind show a simple sample:
If I scroll the RadGridView to the bottom and then move the mouse over the text "Place Mouse Here", the RadGridView scrolls to the top. If I then click the mouse over "Place Mouse Here", causing the RadGridView to scroll to the bottom, and then move the mouse outside the text "Place Mouse Here", the RadGridView again scrolls to the top. Note that placing the mouse over the text "Place Mouse Here" causes a TextBlock to become visible at the bottom of the screen.
I can stop this auto scrolling of the RadGridView by changing either or both the grid row height of * or grid column width of * to a fixed value. However, this is not an acceptable solution because I want those grid row and column to take all remaining space in the window.
I believe, but can't prove, that this behavior has something to do with a SizedChange event being fired when the TextBlock at the bottom of the window changes its visibility. But obviously in my case, no sizes are actually changing.
Can anybody tell me what is causing the unsolicited scrolling of my RadGridView and, better yet, how to avoid this behavior?
Thank you,
-- john
I am using RadControls version 2012.2.607.40 for WPF 4.
I am having an issue with the scrolling of a RadGridView. The problem is that under certain circumstances, the RadGridView scrolls to the top for no apparent reason. The following xaml and code-behind show a simple sample:
<
Window
x:Class
=
"RadGridViewScrollingSample.MainWindow"
xmlns:telerik
=
"http://schemas.telerik.com/2008/xaml/presentation"
xmlns:local
=
"clr-namespace:RadGridViewScrollingSample"
x:Name
=
"_this"
Title
=
"MainWindow"
Height
=
"350"
>
<
Window.Resources
>
<
BooleanToVisibilityConverter
x:Key
=
"BooleanToVisibilityConverter"
/>
</
Window.Resources
>
<
Grid
>
<
Grid.RowDefinitions
>
<
RowDefinition
Height
=
"Auto"
/>
<
RowDefinition
Height
=
"*"
/>
<
RowDefinition
Height
=
"Auto"
/>
</
Grid.RowDefinitions
>
<
Grid.ColumnDefinitions
>
<
ColumnDefinition
Width
=
"Auto"
/>
<
ColumnDefinition
Width
=
"*"
/>
</
Grid.ColumnDefinitions
>
<
StackPanel
Grid.Row
=
"0"
Grid.Column
=
"0"
Grid.ColumnSpan
=
"2"
>
<
TextBlock
Text
=
'Scroll down in the grid view below then move the mouse over "Place Mouse Here".'
/>
<
TextBlock
Text
=
"You will see the grid view automatically scroll to the top."
/>
<
TextBlock
Text
=
'Clicking in "Place Mouse Here" will scroll the last row of the grid view in to view, but'
/>
<
TextBlock
Text
=
'the grid view will again scroll to the top when the mouse is moved outside "Place Mouse Here".'
/>
</
StackPanel
>
<
telerik:RadGridView
x:Name
=
"gridView"
Grid.Row
=
"1"
Grid.Column
=
"0"
ScrollViewer.VerticalScrollBarVisibility
=
"Visible"
ItemsSource
=
"{Binding Path=Things}"
/>
<
TextBlock
Grid.Row
=
"1"
Grid.Column
=
"1"
x:Name
=
"placeholder"
HorizontalAlignment
=
"Center"
VerticalAlignment
=
"Center"
TextWrapping
=
"Wrap"
TextAlignment
=
"Center"
Text
=
"Place Mouse Here"
FontSize
=
"40"
MouseUp
=
"OnMouseUp"
/>
<
DockPanel
Grid.Row
=
"2"
Grid.Column
=
"0"
Grid.ColumnSpan
=
"2"
>
<
TextBlock
Text
=
"This is placeholder text. "
/>
<
TextBlock
Text
=
'This text appears when the mouse is over "Place Mouse Here".'
Visibility
=
"{Binding ElementName=placeholder, Path=IsMouseOver, Converter={StaticResource BooleanToVisibilityConverter}}"
/>
</
DockPanel
>
</
Grid
>
</
Window
>
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Windows;
using
System.Windows.Controls;
using
System.Windows.Data;
using
System.Windows.Documents;
using
System.Windows.Input;
using
System.Windows.Media;
using
System.Windows.Media.Imaging;
using
System.Windows.Navigation;
using
System.Windows.Shapes;
using
System.Collections.ObjectModel;
using
System.ComponentModel;
namespace
RadGridViewScrollingSample
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public
partial
class
MainWindow : Window
{
private
ObservableCollection<Thing> things =
new
ObservableCollection<Thing>();
private
string
[] colors =
new
string
[] {
"red"
,
"green"
,
"blue"
,
"orange"
,
"purple"
};
private
string
[] sizes =
new
string
[] {
"small"
,
"medium"
,
"large"
};
public
MainWindow()
{
InitializeComponent();
DataContext =
this
;
int
i = 0;
for
(
char
c =
'A'
; c <=
'Z'
; c++, i++)
{
things.Add(
new
Thing(c.ToString(), colors[i % colors.Length], sizes[i % sizes.Length]));
}
}
public
ObservableCollection<Thing> Things
{
get
{
return
things; }
}
private
void
OnMouseUp(
object
sender, MouseButtonEventArgs e)
{
gridView.ScrollIntoView(things.FirstOrDefault(t => t.Name ==
"Z"
));
}
}
public
class
Thing
{
private
string
name;
private
string
color;
private
string
size;
public
Thing(
string
name,
string
color,
string
size)
{
this
.name = name;
this
.color = color;
this
.size = size;
}
public
string
Name
{
get
{
return
name; }
}
public
string
Color
{
get
{
return
color; }
}
public
string
Size
{
get
{
return
size; }
}
}
}
If I scroll the RadGridView to the bottom and then move the mouse over the text "Place Mouse Here", the RadGridView scrolls to the top. If I then click the mouse over "Place Mouse Here", causing the RadGridView to scroll to the bottom, and then move the mouse outside the text "Place Mouse Here", the RadGridView again scrolls to the top. Note that placing the mouse over the text "Place Mouse Here" causes a TextBlock to become visible at the bottom of the screen.
I can stop this auto scrolling of the RadGridView by changing either or both the grid row height of * or grid column width of * to a fixed value. However, this is not an acceptable solution because I want those grid row and column to take all remaining space in the window.
I believe, but can't prove, that this behavior has something to do with a SizedChange event being fired when the TextBlock at the bottom of the window changes its visibility. But obviously in my case, no sizes are actually changing.
Can anybody tell me what is causing the unsolicited scrolling of my RadGridView and, better yet, how to avoid this behavior?
Thank you,
-- john