What role does RadGridViewAutomationPeer?
I have a RadGridView in my application, but when I change my DataContext to a new object containing a new List for the ItemsSource, the RadGridView is still holding all the old objects from the old List used by the ItemsSource in memory through this RadGridViewAutomationPeer. Not knowing what the AutomationPeer does, I'm at a bit of a loss as to how to get it to release those old objects. I wasn't able to find any useful information on this class. I've attached the memory retention chart from dotMemory showing my CurveSets being held.
Here's the xaml for the chart:
<
telerik:RadGridView
x:Name
=
"CurveList"
Grid.Row
=
"1"
AutoGenerateColumns
=
"False"
ItemsSource
=
"{Binding Path=Wells}"
IsFilteringAllowed
=
"False"
ShowGroupPanel
=
"False"
CanUserSortColumns
=
"False"
SelectionMode
=
"Single"
IsSynchronizedWithCurrentItem
=
"True"
CurrentItem
=
"{Binding Path=DeclineConsolidator.CurrentCurve, Mode=TwoWay}"
GroupRenderMode
=
"Flat"
EnableRowVirtualization
=
"True"
>
<
telerik:RadGridView.Resources
>
<
consolidator:WellNameStyleSelector
x:Key
=
"NameStyleSelector"
>
<
consolidator:WellNameStyleSelector.CleanStyle
>
<
Style
TargetType
=
"{x:Type telerik:GridViewCell}"
>
<
Setter
Property
=
"FontStyle"
Value
=
"Normal"
/>
</
Style
>
</
consolidator:WellNameStyleSelector.CleanStyle
>
<
consolidator:WellNameStyleSelector.DirtyStyle
>
<
Style
TargetType
=
"{x:Type telerik:GridViewCell}"
>
<
Setter
Property
=
"FontStyle"
Value
=
"Italic"
/>
</
Style
>
</
consolidator:WellNameStyleSelector.DirtyStyle
>
</
consolidator:WellNameStyleSelector
>
</
telerik:RadGridView.Resources
>
<
telerik:RadGridView.Columns
>
<
telerik:GridViewDataColumn
Header
=
""
Width
=
"25"
MaxWidth
=
"25"
MinWidth
=
"25"
IsReadOnly
=
"True"
>
<
telerik:GridViewDataColumn.CellTemplate
>
<
DataTemplate
>
<
Image
Source
=
"{Binding Source={x:Static pcc:ImageSourceConstants.WarningIcon}}"
Visibility
=
"{Binding Path=IsValid, Converter={StaticResource InverseBoolToVisibilityConverter}}"
Tag
=
"{Binding Path=ErrorMessageAlert}"
Width
=
"15"
Height
=
"15"
Margin
=
"0,0,0,0"
>
<
i:Interaction.Behaviors
>
<
infrastructure:ImageGridValidationBehaviour
/>
</
i:Interaction.Behaviors
>
</
Image
>
</
DataTemplate
>
</
telerik:GridViewDataColumn.CellTemplate
>
</
telerik:GridViewDataColumn
>
<
telerik:GridViewDataColumn
Header
=
"{x:Static prop:Resources.WellListColumnHeader}"
IsReadOnly
=
"True"
DataMemberBinding
=
"{Binding Path=DisplayName}"
Width
=
"*"
CellStyleSelector
=
"{StaticResource NameStyleSelector}"
/>
</
telerik:RadGridView.Columns
>
</
telerik:RadGridView
>
Hi, I'm using the same approach as a demo I came across on a forum post. It works well if the # of rows is small, but once you start to add hundreds of rows, the performance goes down dramatically. Any idea how to solve this?
Demo can be found here. It's almost like yours except with a for loop creating a larger dataset. Takes over 5 mins to get the print.
https://uploadz.co/w6b9ghawf6uu
I am using you own example in Setting PropertSets
In this I've set DisplayName of FillColor property, but it don't get it's this specified display name, but rather it shows the property name.
MainWindow.xaml
<
Grid
>
<
Grid.Resources
>
<
local:ViewModel
x:Key
=
"vm"
/>
</
Grid.Resources
>
<
telerik:RadPropertyGrid
DataContext
=
"{StaticResource vm}"
Item
=
"{Binding Shapes}"
PropertySetMode
=
"Intersection"
/>
</
Grid
>
ViewModel.cs
public class ViewModel
{
public IEnumerable<
object
> Shapes
{
get
{
return new List<
object
>()
{
new Ellipse()
{
Center = new Point(1,1),
FillColor = Colors.Red,
RadiusX1 = 4, RadiusX2 = 2
},
new RegularPolygon()
{
Center = new Point(3,2),
FillColor = Colors.Blue,
CornersCount = 3,
SideLength = 10
}
};
}
}
}
public class Ellipse
{
[DisplayName("Fill Color")]
public Color FillColor { get; set; }
public double RadiusX1 { get; set; }
public double RadiusX2 { get; set; }
public Point Center {
get;
set; }
}
public class RegularPolygon
{
public int CornersCount { get; set; }
public Color FillColor { get; set; }
public Point Center {
get;
set; }
public double SideLength { get; set; }
}
Kindly suggest me it's solution.
Hi,
I would like to ask how can I find RadCartesianChart on Visual Studio 2015 + Coded UI Test.
http://www.telerik.com/teststudio/visual-studio-testing-plugin-benefits - This is same example for Grid.
I try his but I can't have that option Find.ById
RadCartesianChart radCartesianChart = Find.
Hi Telerik,
We have a RadDocking control in a child control that resides within a RadDocking control in a parent control.
The parent control contains a RadDocking control which encompasses a Tab control, and the child control resides in one of these Tab controls, where the RadDocking control resides in another TabControl inside the child control. The parent and child controls each have their own Views and VMs.
When binding 'SelectedItem' in myDatagrid, we receive the following binding error:
Cannot find source for binding with reference 'ElementName=myDatagrid, RelativeSource={RelativeSource=Self}'. BindingExpression:Path=SelectedItem; DataItem=null; target element is 'InvokeCommandAction' (HashCode=57688201); target property is 'CommandParameter' (type 'Object')
This error disappears and we are able to bind to 'SelecteItem' only when we remove the 2nd (second) RadDocking control within the parent.
Please see attached diagram for visual reference.
Could you please advise?
Kind regards
Hi,
Like "FrozenColumnCount", Is there any provision for freezing rows?
Regards,
Norbert John
Hi, I would like to change the color of my BusyIndicator. I have been able to change the background and the stroke but I can't modify the "spinner" colors.
This is quite a simple question that have been answered several times but I don't understand how to implement the solutions I saw in my code. Maybe you will be able to explain me the solution for the following code:
<
ControlTemplate
x:Key
=
"GridViewLoadingIndicatorTemplate"
TargetType
=
"{x:Type grid:GridViewLoadingIndicator}"
>
<
Border
x:Name
=
"BusyIndicatorBackground"
Background
=
"#F1F1F1"
Opacity
=
"0"
>
<
VisualStateManager.VisualStateGroups
>
<
VisualStateGroup
x:Name
=
"CommonStates"
>
<
VisualState
x:Name
=
"Idle"
/>
<
VisualState
x:Name
=
"Loading"
>
<
Storyboard
RepeatBehavior
=
"Forever"
>
<
DoubleAnimationUsingKeyFrames
BeginTime
=
"00:00:00"
Storyboard.TargetName
=
"BusyIndicatorBackground"
Storyboard.TargetProperty
=
"Opacity"
>
<
SplineDoubleKeyFrame
KeyTime
=
"0"
Value
=
"1"
/>
</
DoubleAnimationUsingKeyFrames
>
<
DoubleAnimationUsingKeyFrames
BeginTime
=
"00:00:00"
Storyboard.TargetName
=
"BusyIndicator"
Storyboard.TargetProperty
=
"(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)"
>
<
SplineDoubleKeyFrame
KeyTime
=
"00:00:01"
Value
=
"180"
/>
</
DoubleAnimationUsingKeyFrames
>
</
Storyboard
>
</
VisualState
>
</
VisualStateGroup
>
</
VisualStateManager.VisualStateGroups
>
<
Path
x:Name
=
"BusyIndicator"
Stretch
=
"Fill"
Stroke
=
"{TemplateBinding BorderBrush}"
StrokeThickness
=
"{TemplateBinding BorderThickness}"
Fill
=
"{TemplateBinding Background}"
Margin
=
"{TemplateBinding Padding}"
HorizontalAlignment
=
"{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment
=
"{TemplateBinding VerticalContentAlignment}"
Width
=
"36"
Height
=
"36"
Data
=
"M18,5.0000002 C10.820298,5 5,10.820298 5.0000002,18 5,25.179701 10.820298,31 18,31 25.179701,31 31,25.179701 31,18 31,10.820298 25.179701,5 18,5.0000002 z M18,0 C27.941126,0 36,8.0588746 36,18 36,27.941126 27.941126,36 18,36 8.0588746,36 0,27.941126 0,18 0,8.0588746 8.0588746,0 18,0 z"
RenderTransformOrigin
=
"0.5,0.5"
>
<
Path.RenderTransform
>
<
TransformGroup
>
<
ScaleTransform
/>
<
SkewTransform
/>
<
RotateTransform
Angle
=
"-180"
/>
<
TranslateTransform
/>
</
TransformGroup
>
</
Path.RenderTransform
>
</
Path
>
</
Border
>
</
ControlTemplate
>
<
Style
x:Key
=
"GridViewLoadingIndicatorStyle"
TargetType
=
"{x:Type grid:GridViewLoadingIndicator}"
>
<
Setter
Property
=
"Template"
Value
=
"{StaticResource GridViewLoadingIndicatorTemplate}"
/>
<
Setter
Property
=
"Background"
Value
=
"{StaticResource GridView_LoadingIndicatorBackground}"
/>
<
Setter
Property
=
"BorderBrush"
Value
=
"{StaticResource GridView_LoadingIndicatorBorder}"
/>
<
Setter
Property
=
"BorderThickness"
Value
=
"1"
/>
<
Setter
Property
=
"Padding"
Value
=
"0"
/>
<
Setter
Property
=
"VerticalContentAlignment"
Value
=
"Center"
/>
<
Setter
Property
=
"HorizontalContentAlignment"
Value
=
"Center"
/>
</
Style
>
Thank you,
Antonin Charrier
PS: I'm quite new to WPF and Telerik, I think you understood it