I have a RadGridView with ItemsSource bound to a collection of business objects. The grid has a GridViewDataColumn bound to a property with a TwoWay binding. The property has a validation attribute.
When the user is editing the cell, and presses <Enter>, the validation attribute's IsValid() method is invoked, and if validation succeeds, the griid navigates to the same column in the next row. But if validation fails, the failure is visualized and the navigation does not occur. In fact, any attempt to navigate away from the cell by any means causes validation, and if the validation fails, the navigation does not occur. This is all good, and exactly as it should be. Anything less would be wrong -- what's the point of validation if it doesn't force the user to enter valid data?
But here's my problem. I also want the down and up arrows to navigate up and down while editing. Seems as if it should be straight forward -- just preview KeyDown, handle up and down keys and execute the grid's MoveUp and MoveDown commands, right? Wrong. When the grid's MoveUp or MoveDown command is executed, the validation attribute's IsValid() method is still invoked, but a failed validation does not prevent the navigation.
This seems like such a routine requirement that I feel like I must be missing something. The reason for the existence of the MoveUp, MoveDown, etc., commands seems to be the recognition that navigation controls might need to be more robust that the default behaviors. But those command circumventing validation appears to make them useless. Surely I'm just missing something.
Hi,
since we don't need the TimeRuler of the WeekView in our project, I've hid it and set the Minor/MajorTickLengthes to "1day", so all appointments of that day appear in one big cell.
Problem is, that - since the appointments happen at the "same time", they appear next to- instead of below each other.
When I activate the AllDayArea, my Appointments show up below each other but I still have the big - formerly TimeRuler - area, which I can't get rid of.
Any Ideas?
Thanks
I have an issue using the RadialMenu with the GridView.
If I use the following code :
<
telerik:RadGridView
x:Name
=
"GridView"
adhoc:ColumnStackPanel.Column
=
"2"
AutoGenerateColumns
=
"False"
MaxHeight
=
"300"
>
<
telerik:RadGridView.Resources
>
<
Style
TargetType
=
"telerik:GridViewRow"
BasedOn
=
"{StaticResource {x:Type telerik:GridViewRow}}"
>
<
Setter
Property
=
"telerik:RadRadialMenu.RadialContextMenu"
>
<
Setter.Value
>
<
telerik:RadRadialMenu ShowEventName="GotFocus" HideEventName="LostFocus"
StaysOpenOnShow
=
"True"
PopupPlacement
=
"MousePoint"
>
<
telerik:RadRadialMenuItem
Header
=
"Hello"
/>
<
telerik:RadRadialMenuItem
Header
=
"World"
/>
</
telerik:RadRadialMenu
>
</
Setter.Value
>
</
Setter
>
</
Style
>
</
telerik:RadGridView.Resources
>
<
telerik:RadGridView.Columns
>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding Data1}"
IsReadOnly
=
"True"
Header
=
"Data1"
/>
</
telerik:RadGridView.Columns
>
</
telerik:RadGridView
>
I will have a NullReferenceException with the following stacktrace if I scroll down and backward two time :
at Telerik.Windows.Controls.RadRadialMenu.OnRadialContextMenuChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
at System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
at System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
at System.Windows.DependencyObject.InvalidateProperty(DependencyProperty dp, Boolean preserveCurrentValue)
at System.Windows.StyleHelper.InvalidateContainerDependents(DependencyObject container, FrugalStructList`1& exclusionContainerDependents, FrugalStructList`1& oldContainerDependents, FrugalStructList`1& newContainerDependents)
at System.Windows.StyleHelper.DoStyleInvalidations(FrameworkElement fe, FrameworkContentElement fce, Style oldStyle, Style newStyle)
at System.Windows.StyleHelper.UpdateStyleCache(FrameworkElement fe, FrameworkContentElement fce, Style oldStyle, Style newStyle, Style& styleCache)
at System.Windows.FrameworkElement.OnStyleChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
at System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
at System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
at System.Windows.DependencyObject.InvalidateProperty(DependencyProperty dp, Boolean preserveCurrentValue)
at System.Windows.FrameworkElement.UpdateStyleProperty()
at System.Windows.TreeWalkHelper.InvalidateOnTreeChange(FrameworkElement fe, FrameworkContentElement fce, DependencyObject parent, Boolean isAddOperation)
at System.Windows.FrameworkElement.OnVisualParentChanged(DependencyObject oldParent)
at System.Windows.Media.Visual.FireOnVisualParentChanged(DependencyObject oldParent)
at System.Windows.Media.Visual.RemoveVisualChild(Visual child)
at System.Windows.Media.VisualCollection.DisconnectChild(Int32 index)
at System.Windows.Media.VisualCollection.InternalRemove(Visual visual)
at System.Windows.Controls.UIElementCollection.RemoveInternal(UIElement element)
at System.Windows.Controls.UIElementCollection.Remove(UIElement element)
at Telerik.Windows.Controls.GridView.GridViewVirtualizingPanel.NestedLayoutStrategy.DisconnectRecycledContainers()
at Telerik.Windows.Controls.GridView.GridViewVirtualizingPanel.NestedLayoutStrategy.MeasureOverride(Size constraint)
at Telerik.Windows.Controls.GridView.GridViewVirtualizingPanel.MeasureOverride(Size availableSize)
at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
at System.Windows.UIElement.Measure(Size availableSize)
at System.Windows.ContextLayoutManager.UpdateLayout()
at System.Windows.ContextLayoutManager.UpdateLayoutCallback(Object arg)
at System.Windows.Media.MediaContext.InvokeOnRenderCallback.DoWork()
at System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks()
at System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget)
at System.Windows.Media.MediaContext.RenderMessageHandler(Object resizedCompositionTarget)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
at System.Windows.Threading.DispatcherOperation.InvokeImpl()
at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
at MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(Object obj)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at MS.Internal.CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext executionContext, ContextCallback callback, Object state)
at System.Windows.Threading.DispatcherOperation.Invoke()
at System.Windows.Threading.Dispatcher.ProcessQueue()
at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
at System.Windows.Application.RunDispatcher(Object ignore)
at System.Windows.Application.RunInternal(Window window)
at System.Windows.Application.Run(Window window)
at System.Windows.Application.Run()
at Adhoc.ToolsWPF.Sample.App.Main()
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
This is obviously caused by virtualisation.
I tried to set the RadialMenu as ContextMenu directly in the RadGridView managing the ItemsSource of the RadialMenu with the selecteditem of the RadGridView but I have another issue where the RadialMenu will show and hide if the show event occure while the selected row change.
Hi,
the scrollbar doesn't appear in the filtercontrol whan I have a lot of distinct items in a gridview.
I use the Windows8Touch theme without customization.
Any idea ?
Thanks
Hello,
I have a very simple piece of code to bind my RadMenu control to an ObservableList of Menus.
My xaml looks like this:
<telerik:RadMenu Name:"MainMenu" ItemsSource="{Binding Menus}"/>
This works fine. In order to display something more interesting, I can add:
<telerik:RadMenu Name:"MainMenu" ItemsSource="{Binding Menus}" DisplayMemberPath="Name" />
And I get the Name property of my Menus displayed.
Now I would like to get a step further as my Menu class has a SubMenus property so I try to play with RadMenuItem styling and this is where I get lost.
If I write simple code like this, that according to me should do the same as the DisplayMemberPath :
<telerik:RadMenu Name:"MainMenu" ItemsSource="{Binding Menus}" >
<telerik:RadMenu.Resources>
<Style TargetType="telerik:RadMenuItem">
<Setter Property="Header" Value="{Binding Name}"/>
</Style>
</telerik:RadMenu.Resources>
</telerik:RadMenu>
Nothing is displayed on my window when running the code.
I have checked everything, I can see in my view that the Menu is created and the items inside, etc... but the RadMenus don't display.
As soon as I comment out the Style, menus are displayed. As everything else is straightforward in my code, I think I am missing something obvious but I can't find it. There is no error in debug for binding issues or else.
I use Telerik 2017.1.22.45.
Thanks for your feedback.
Hello,
I'm using telerik control tools for WPF UI ver: 2015.1.0401.45
I have noticed that radlistbox has a huge memory leak. On replacing radlistbox with Microsoft listbox, memory leak does not occur.
I'm attaching the demo project (replace extension of file from .jpg to .zip).
This project demonstrates the problem of memory leak. Actually the memory leak occurs on data binding
I've remarked the Microsoft listbox in xaml, so to prove my claim, just use Microsoft listbox instead of radlistbox and see the difference in memory usage of the processes.
Do you have a patch to fix this issue ?
Thank you,
Alex