Hello. I bag your pardon, but I've come to desperation due to not founding a two-level Master/Detail example that uses two separate RadGridView (the first one for master records and the second one for detail records). Please give me an example of such an application where master records and detail records are added dynamically during run-time.
Thanks in advance.
Hello,
i used RadGridView to show some items. I have defined some columns of RadGridView and bind ItemsSource with list of ViewModelABC, which is a type of IViewModel.
public interface IViewModel{ }public Class ViewModelABC : IViewModel{ public string PropertyA { get; set; } public string PropertyB { get; set; } public string PropertyC { get; set; }}public Class MyData{ public MyData() { MyItems = new List<IViewModel>(); // MyItems could be filled with ViewModelABC
//MyItems.Add(new ViewModelABC());
} public IList<IViewModel> MyItems {get;set;}}ViewModelABC has implemented the interface IViewModel and some properties.
When i start the application without Items, that meas, my MyData as DataContext is initialized, but it has no entry for ItemsSource in MyItems. Then i get ArgumentException from each column. "Property with name 'PropertyA' cannot be found on type 'IViewModel'.
I don't want to defined the list with type ViewModelABC. Is there another way to avoid the ArgumentException?
Thanks a lot.
Regards,
Ivan
Hi,
I have a RadCartesianChart with a HorizontalAxis set as LinearAxis, and the series are RangeBarSeries. The problem is that sometimes I have data on my chart only for a small range on the most left side, and some data for a small range on the most right side. In that case, I would like to skip showing on the chart that big empty gap in between.
So, its not only about hiding labels, its the LinearAxis that I don't want it to show 0->140 for example, but to show 0->30, 100->140 (etc)
Is it possible?

Hellow.
I do Master/Detail hierarchical RadGridView in the following manner. The View is:
<UserControl x:Class="RecordAndPlaybackSession.Views.RecordAndPlaybackSessionView" xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" xmlns:prism="http://prismlibrary.com/" xmlns:commonControls="clr-namespace:CommonWpfControlLibrary;assembly=CommonWpfControlLibrary" prism:ViewModelLocator.AutoWireViewModel="True"> <i:Interaction.Triggers> <!--<OK> dialog--> <prism:InteractionRequestTrigger SourceObject="{Binding NotificationRequest, Mode=OneWay}"> <prism:PopupWindowAction IsModal="True" CenterOverAssociatedObject="True"> <prism:PopupWindowAction.WindowContent> <commonControls:NotificationDialogPopupView/> </prism:PopupWindowAction.WindowContent> <prism:PopupWindowAction.WindowStyle> <Style TargetType="Window"> <Setter Property="ResizeMode" Value="NoResize"/> <Setter Property="SizeToContent" Value="WidthAndHeight"/> </Style> </prism:PopupWindowAction.WindowStyle> </prism:PopupWindowAction> </prism:InteractionRequestTrigger> </i:Interaction.Triggers> <Grid> <Grid.RowDefinitions> <RowDefinition Height="*"/> <RowDefinition Height="35" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition/> </Grid.ColumnDefinitions> <Grid.Resources> <DataTemplate x:Key="RowDetailsTemplate"> <telerik:RadGridView Name="SavedSesionsGrid" IsReadOnly="True" ItemsSource="{Binding SavedWorkingSesions}" AutoGenerateColumns="False" ShowGroupPanel="False"> <telerik:RadGridView.Columns> <telerik:GridViewDataColumn DataMemberBinding="{Binding Date}" Header="Session date"/> <telerik:GridViewDataColumn DataMemberBinding="{Binding Time_Begin}" Header="Time Begin"/> <telerik:GridViewDataColumn DataMemberBinding="{Binding Time_End}" Header="Time End"/> <telerik:GridViewDataColumn DataMemberBinding="{Binding Modbus_Transmision_Mode}" Header="MODBUS Transmision Mode"/> <telerik:GridViewDataColumn DataMemberBinding="{Binding Brief_Description}" Header="Brief Description" IsReadOnly="False"/> </telerik:RadGridView.Columns> </telerik:RadGridView> </DataTemplate> </Grid.Resources> <telerik:RadGridView Grid.Row="0" Grid.Column="0" Name="DevicesGrid" ItemsSource="{Binding DevicesWithSavedSesions}" AutoGenerateColumns="False" IsReadOnly="True" CanUserDeleteRows="False" CanUserFreezeColumns="False" CanUserInsertRows="False" CanUserReorderColumns="False" CanUserResizeRows="False" CanUserSearch="False" CanUserSortColumns="False" IsFilteringAllowed="False" SelectedItem="{Binding SelectedDevice}" RowIndicatorVisibility="Collapsed" RowDetailsTemplate="{StaticResource RowDetailsTemplate}" Margin="5"> <telerik:RadGridView.Columns> <telerik:GridViewToggleRowDetailsColumn/> <telerik:GridViewDataColumn DataMemberBinding="{Binding DisplayedName}" Header="Name"/> <telerik:GridViewDataColumn DataMemberBinding="{Binding SerialNumber}" Header="Serial #/> <telerik:GridViewDataColumn DataMemberBinding="{Binding SelectedBeamsQuantity}" Header="Beams Quantity"/> <telerik:GridViewDataColumn DataMemberBinding="{Binding SelectedInnerDiameter}" Header="Inner Diameter"/> <telerik:GridViewDataColumn DataMemberBinding="{Binding CompanyOwnerOfDevice}" Header="Device Owner"/> <telerik:GridViewDataColumn DataMemberBinding="{Binding MountingLocation}" Header="Locality"/> <telerik:GridViewCheckBoxColumn DataMemberBinding="{Binding IsCurrentlyConnected}" Header="Is Connected"> <telerik:GridViewCheckBoxColumn.CellStyle> <Style TargetType="telerik:GridViewCell" BasedOn="{StaticResource GridViewCellStyle}"> <Setter Property="HorizontalContentAlignment" Value="Center" /> </Style> </telerik:GridViewCheckBoxColumn.CellStyle> </telerik:GridViewCheckBoxColumn> </telerik:RadGridView.Columns> </telerik:RadGridView> <StackPanel Grid.Row="1" Grid.Column="0" Orientation="Horizontal" HorizontalAlignment="Center"> <telerik:RadButton Height="25" Width="100" Margin="0 0 0 5" Content="Save" ToolTip="Save current sesion." Command="{Binding SaveWorkingSessionCommand}"/> <telerik:RadButton Height="25" Width="100" Margin="10 0 10 5" Content="Stop" ToolTip="Stop saving process of current sesion" Command="{Binding StopSavingOfWorkingSesionCommand}"/> <telerik:RadButton Height="25" Width="100" Margin="10 0 10 5" Content="Play" ToolTip="Play selected saving sesion" Command="{Binding PlaySavedSessionCommand}"/> <telerik:RadButton Height="25" Width="100" Margin="0 0 0 5" Content="Delete" ToolTip="Delete selected saving session" Command="{Binding DeleteSavedSessionCommand}"/> </StackPanel> </Grid></UserControl>In the ViewModel I create (in particular) the folowing property that is bound to SelectedItem of master RadGridView. This is the user-selected device which session must be saved. Please see it below:
#region Properties. . . . . . . . . public object SelectedDevice{ get { return this._selectedDevice; } set { if (this.SetProperty(ref this._selectedDevice, value)) this.SaveWorkingSessionCommand.RaiseCanExecuteChanged(); }}. . . . . . . . . . . . .#endregionAnd also the following properties:
#region Properties . . . . . . . . . . . /// <summary> /// Gets or sets the collection of devices that have saving sessions, and currently conected device. /// </summary> public ObservableCollection<Device> DevicesWithSavedSesions { get { return this._devicesWithSavedSessions; } set { this._devicesWithSavedSessions = value; } } /// <summary> /// Gets or sets the collection of saved working sessions per device. /// </summary> ObservableCollection<DeviceWorkingSession> SavedWorkingSesions { get { return this._savedWorkingSesions;//new ObservableCollection<DeviceWorkingSession>(this.DevicesWithSavedSesions.SelectMany(device => device.SavedWorkingSession)); } set { this.SetProperty(ref this._savedWorkingSesions, value); } } . . . . . . . . . . . #endregionI initialize these properties in constructor of ViewModel:
this.DevicesWithSavedSesions = new RadObservableCollection<Device>();this.SavedWorkingSesions = new RadObservableCollection<DeviceWorkingSession>();And in 'SaveWorkingSesionCommand' I do the following:
// Create instance of record with information about session being saved.DeviceWorkingSession savedSession = new DeviceWorkingSession();// GUID of saved sesion.savedSession.Id = Guid.NewGuid();// Id of device which sesion is saved.savedSession.Devices_Id = GlobalStaticMembers.SharedProfileHeader.Id;// Date of saving of the session.DateTime sessionDateTime = DateTime.Now;savedSession.Date = sessionDateTime.Date;// Time when sesion saving beginssavedSession.Time_Begin = sessionDateTime.TimeOfDay;savedSession.StrTimeBegin = savedSession.Time_Begin.ToString(@"hh\:mm\:ss\:fff");// Transmision mode of MODBUS protocol.savedSession.Modbus_Transmision_Mode = GlobalStaticMembers.ModbusTransmisionMode;// Save session in 'Device' instance (in the manner as it done in your 'ExpandAllRowsDetails' example in your SDK).(this.SelectedDevice as Device).SavedWorkingSession.Add(savedSession);// Save session in collection that is binding source.this.SavedWorkingSesions.Add(savedSession);Below is the definition of SavedWorkingSession from Device class:
public ObservableCollection<DeviceWorkingSession> SavedWorkingSession{ get { if (this._savedWorkingSession == null) this._savedWorkingSession = new ObservableCollection<DeviceWorkingSession>(); return this._savedWorkingSession; }}But I can not see detail records. Please see 'HierarchyMasterDetail.PNG' file attached. If you need more detail, please write me.
Hi Team,
I have used the RadImageEditor to show the tif images in ListView. When clicking on RadImageEditor, the Selection is not processed in ListView, it is working fine when clicking over TextBlock. How to skip the mouse operations in RadImageEdiotr? Please refer the below code snippet.
<ControlTemplate TargetType="{x:Type ListViewItem}"> <Border x:Name="PART_ImageView" BorderBrush="#D3D3D3" BorderThickness="1" Margin="10"> <Grid Width="155" Height="195"> <telerik:RadImageEditor Image="{Binding}" AllowMouseWheelScaling="False" HorizontalContentAlignment="Stretch" VerticalAlignment="Stretch" Style="{DynamicResource RadImageEditorStyle1}" ScaleFactor="0"/> <Border x:Name="PART_PageNoBorder" Width="24" Height="24" HorizontalAlignment="Right" VerticalAlignment="Bottom" Background="#D3D3D3" BorderThickness="0"> <TextBlock x:Name="PART_PageNo" FontSize="14" FontFamily="Segoe UI" Foreground="Gray" Margin="4" Text="01"/> </Border> </Grid> </Border> <ControlTemplate.Triggers> <Trigger Property="IsSelected" Value="True"> <Setter TargetName="PART_ImageView" Property="BorderBrush" Value="#1ba1e2"/> <Setter TargetName="PART_PageNoBorder" Property="Background" Value="#1ba1e2"/> <Setter TargetName="PART_PageNo" Property="Foreground" Value="#FFFFFF"/> </Trigger> </ControlTemplate.Triggers></ControlTemplate>
Regards,
Antony Raj

I am building a WPF form and using Telerik WPF 2017.1.117. I have a pdf loading fine from an external URL, but when I call the .Print command nothing is spooled and no errors are generated. After searching as much as I could, I can't find anything that would show why what I have is not working. Thanks for any help you can provide.
using (WebClient client = new WebClient())
{
using (Stream ms = new MemoryStream(client.DownloadData(Properties.Settings.Default.URL + badgeURL)))
{
MemoryStream mStream = new MemoryStream();
mStream.SetLength(ms.Length);
ms.Read(mStream.GetBuffer(), 0, (int)ms.Length);
this.radPDF.DocumentSource = new PdfDocumentSource(mStream);
}
}
this.radPDF.Print(new PrintSettings("Document 1", true));
I've encountered a strange issue regarding the GridViewPinButton visibility in RadGridView.
My only wish is to disable this functionality- to set the GridViewPinButton visibility to collapse in every row in RadGridView.
Now, I have one place where it works great and another one where I can see this button while I'm hovering the rows.
In both places I haven't written any code concerning the GridViewPinButton , and in both cases the visibility of the button is set to collapsed.
The only difference I can see is in snoop (images are attached):
When it works well, GridViewPinButton does not have any child elements, while it has them in the second case.
When I click the button, I get the error:
Could not find any resources appropriate for the specified culture or the neutral culture. Make sure "Telerik.Windows.Controls.GridView.Strings.resources" was correctly embedded or linked into assembly "Telerik.Windows.Controls.GridView" at compile time, or that all the satellite assemblies required are loadable and fully signed.
at System.Resources.ManifestBasedResourceGroveler.HandleResourceStreamMissing(String fileName)
at System.Resources.ManifestBasedResourceGroveler.GrovelForResourceSet(CultureInfo culture, Dictionary`2 localResourceSets, Boolean tryParents, Boolean createIfNotExists, StackCrawlMark& stackMark)
at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo requestedCulture, Boolean createIfNotExists, Boolean tryParents, StackCrawlMark& stackMark)
at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents)
at System.Resources.ResourceManager.GetString(String name, CultureInfo culture)
at Telerik.Windows.Controls.GridView.GridViewItemContainerGenerator.GetBlockAndPosition(Object item, Boolean deletedFromItems, GeneratorPosition& position, ItemBlock& block, Int32& offsetFromBlockStart, Int32& correctIndex)
at Telerik.Windows.Controls.GridView.GridViewItemContainerGenerator.OnItemReplaced(Object oldItem, Object newItem, Int32 index)
at Telerik.Windows.Controls.GridView.GridViewItemContainerGenerator.OnCollectionChanged(Object sender, NotifyCollectionChangedEventArgs args)
at Telerik.Windows.Controls.GridView.GridViewItemContainerGenerator.System.Windows.IWeakEventListener.ReceiveWeakEvent(Type managerType, Object sender, EventArgs e)
at System.Windows.WeakEventManager.ListenerList.DeliverEvent(Listener& listener, Object sender, EventArgs args, Type managerType)
at System.Windows.WeakEventManager.ListenerList`1.DeliverEvent(Object sender, EventArgs e, Type managerType)
at System.Windows.WeakEventManager.DeliverEventToList(Object sender, EventArgs args, ListenerList list)
at System.Windows.WeakEventManager.DeliverEvent(Object sender, EventArgs args)
at System.Collections.Specialized.NotifyCollectionChangedEventHandler.Invoke(Object sender, NotifyCollectionChangedEventArgs e)
at Telerik.Windows.Data.DataItemCollection.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
at Telerik.Windows.Data.DataItemCollection.OnPinnedItemsCollectionChanged(Object sender, NotifyCollectionChangedEventArgs e)
at System.Collections.Specialized.NotifyCollectionChangedEventHandler.Invoke(Object sender, NotifyCollectionChangedEventArgs e)
at System.Collections.ObjectModel.ObservableCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
at Telerik.Windows.Data.DataItemCollection.AddToPinnedItems(Object item)
at System.Windows.Input.CommandBinding.OnExecuted(Object sender, ExecutedRoutedEventArgs e)
at System.Windows.Input.CommandManager.ExecuteCommandBinding(Object sender, ExecutedRoutedEventArgs e, CommandBinding commandBinding)
at System.Windows.Input.CommandManager.FindCommandBinding(CommandBindingCollection commandBindings, Object sender, RoutedEventArgs e, ICommand command, Boolean execute)
at System.Windows.Input.CommandManager.FindCommandBinding(Object sender, RoutedEventArgs e, ICommand command, Boolean execute)
at System.Windows.Input.CommandManager.OnExecuted(Object sender, ExecutedRoutedEventArgs e)
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
at System.Windows.Input.RoutedCommand.ExecuteImpl(Object parameter, IInputElement target, Boolean userInitiated)
at System.Windows.Input.CommandManager.TransferEvent(IInputElement newSource, ExecutedRoutedEventArgs e)
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
at System.Windows.Input.RoutedCommand.ExecuteImpl(Object parameter, IInputElement target, Boolean userInitiated)
at System.Windows.Controls.Button.OnClick()
at Telerik.Windows.Controls.RadButton.OnClick()
at System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent)
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
at System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args)
at System.Windows.Input.InputManager.ProcessStagingArea()
at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at System.Windows.Interop.HwndSource.InputFilterMessage(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 MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
Hi,
I have a treeview that uses the datatemplate shown below. It has a context menu. I'd like to be able to disable or hide certain items depending on which node in the tree they click on. Is this possible? If so, can someone share some example code of how to do this in an MVVM fashion?
Thanks ... Ed
<HierarchicalDataTemplate DataType ="{x:Type vm:AttachmentContainer}" ItemsSource="{Binding Children}"> <TextBlock Text="{Binding Name}" > <telerik:RadContextMenu.ContextMenu> <telerik:RadContextMenu Opened="tv_ContextMenuOpened" > <telerik:RadMenuItem x:Name="icon" Header="Upload File" > <telerik:RadMenuItem.Icon><Image Source="/Images/Upload.png"/></telerik:RadMenuItem.Icon> </telerik:RadMenuItem> <telerik:RadMenuItem Header="New Folder" > <telerik:RadMenuItem.Icon> <Image Source="/Images/NewFolder.png"/> </telerik:RadMenuItem.Icon> </telerik:RadMenuItem> <telerik:RadMenuItem Header="Delete Folder" > <telerik:RadMenuItem.Icon> <Image Source="/Images/DeleteSmall.png"/> </telerik:RadMenuItem.Icon> </telerik:RadMenuItem> </telerik:RadContextMenu> </telerik:RadContextMenu.ContextMenu> </TextBlock></HierarchicalDataTemplate>So, I have a RadDock setup. In the hosting main window there is a radmenu followed by a radtoolbar where I have a toolbarbutton for saving. Below that I have a raddocking that has a pane that hosts my usercontrol that contains, among other things a the RadDateTimePicker shown below. It works great except in one odd condition. If the txtClosedDate has a valid value and the user blanks it out and then hit's the button in the toolbar without clicking or tabbing to another field, the null value is not bound back to the source and my viewmodel receives the original date value instead of null. If, however, the user goes to any other field on the user control, thereby forcing a lost focus event the correct binding happens. I have hacked around the problem with the following code, but I think you boys need to fix this on your side.
Thanks ... Ed
// this is a awful hack to work around a bug where, when the raddatetimepicker's text is cleared and the// user clicks on the save button in the toolbar (which is outside the usercontrol), the bound value does not get updated properly.// it works fine when going from an empty state to a valid date, just not the other way around.private void txtClosedDate_KeyUp(object sender, KeyEventArgs e){ if (string.IsNullOrWhiteSpace(this.txtClosedDate.CurrentDateTimeText )) { this.txtClosedDate.SelectedValue = null; var binding = this.txtClosedDate.GetBindingExpression(RadDateTimePicker.SelectedValueProperty); binding.UpdateSource(); }}
<telerik:RadDateTimePicker x:Name="txtClosedDate" Width="175" Grid.Row="2" Grid.Column="3" HorizontalAlignment="Left" CalendarStyle="{StaticResource calendarStyle}"InputMode="DatePicker" SelectedValue="{Binding Request.ClosedDate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged }"KeyUp="txtClosedDate_KeyUp">
NOTE THAT THIS STYLE IS AT THE APP RESOURSE LEVEL. I Doubt it has anything to do with the problem.
Hi,
I have a tree that is bound and load on demand.
For simplicity say I had: