Hello.
I want add ToolTip on GridViewHeaderCell, column created in code as
column = new GridViewDataColumn
{
ColumnGroupName = args.ColumnDef.ColumnGroupName,
DataMemberBinding = new Binding(args.ColumnDef.Member)
{
Mode = BindingMode.TwoWay,
UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged,
},
IsReadOnlyBinding = new Binding(args.ColumnDef.IsReadOnlyMember)
{
Converter = new NullToBooleanConverter {IsInverted = true}
},
Header = args.ColumnDef.Header,
HeaderCellStyle = TryFindResource("DataHeaderCellStyle") != null ? (Style)Resources["DataHeaderCellStyle"] : new Style(typeof(GridViewHeaderCell)),
IsVisible = true,
IsFilterable = false,
};
if (args.ColumnDef.ToolTip != null)
column.ToolTip = new ToolTip { Content = args.ColumnDef.ToolTip };
in xaml i added style
<Style x:Key="DataHeaderCellStyle" BasedOn="{StaticResource GridViewHeaderCellStyle}" TargetType="telerik:GridViewHeaderCell">
<!--<Setter Property="ToolTipService.ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=Content.Column.ToolTipText, Mode=OneWay}" />-->
<Setter Property="ToolTip" Value="{Binding Content, RelativeSource={RelativeSource Self}}"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="TextWrapping" Value="Wrap"/>
<Setter Property="FontSize" Value="12"/>
</Style>
If use <Setter Property="ToolTipService.ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=Content.Column.ToolTipText, Mode=OneWay}" /> or <Setter Property="ToolTipService.ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=Content.ToolTipText, Mode=OneWay}" /> this is don't work, no tooltip.
If use <Setter Property="ToolTip" Value="{Binding Content, RelativeSource={RelativeSource Self}}"/> (seen here https://www.telerik.com/forums/tooltip-on-column-title) content of GridViewHeaderCell will be lost (on attachement).
How need set tooltip in style property?
If add event subscribe (as here https://www.telerik.com/forums/radgridview---tooltip-for-dynamically-created-column), will work...
ctor
{
InitializeComponent();
EventManager.RegisterClassHandler(typeof(GridViewHeaderCell), GridViewHeaderCell.MouseEnterEvent, new RoutedEventHandler(OnMouseEnterEvent));
}
private void OnMouseEnterEvent(object sender, RoutedEventArgs e)
{
if (sender is GridViewHeaderCell cell && cell.Column.ToolTip != null)
{
cell.ToolTip = cell.Column.ToolTip;
}
}

The performance of the property grid isn't great, and it appears that the performance degrades on some scenarios.
We are placing the property grid inside a RadDocking. The pane itself has the IsHidden bound to a property, since the software is an IDE and depending on the type of the active document, we either show a toolbox and / or a property grid.
I can see with dotTrace that something is leaking (The weakevent listener is raising the handler more time than it should).
Code:
MainWindow.xaml:
<Window x:Class="RadPropertyGridPerformanceIssue1.MainWindow" xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" xmlns:local="clr-namespace:RadPropertyGridPerformanceIssue1" Title="MainWindow" Height="350" Width="525" x:Name="self"> <Grid> <telerik:RadDocking> <telerik:RadSplitContainer telerik:DockingPanel.InitialSize="228,650" Name="RightContainer" InitialPosition="DockedRight" Orientation="Vertical"> <telerik:RadPaneGroup> <telerik:RadPane CanUserClose="False" x:Name="propertiesPane" Header="Properties Window" CanDockInDocumentHost="False" telerik:RadDocking.SerializationTag="Properties" DataContext="{Binding ElementName=self, Path=DataContext}" IsHidden="{Binding ElementName=self, Path=IsHidden, Mode=TwoWay}"> <local:PropertiesControl DataContext="{Binding}" /> </telerik:RadPane> </telerik:RadPaneGroup> </telerik:RadSplitContainer> </telerik:RadDocking> <StackPanel HorizontalAlignment="Left"> <Button Click="Button_Click">Toggle Visibility</Button> <Button Click="Button_Click_1">Toggle Selected Item</Button> </StackPanel> </Grid></Window>
MainWindow,cs
public partial class MainWindow : Window{ private bool isItemSet = false; public object Item { get { return (object)GetValue(ItemProperty); } set { SetValue(ItemProperty, value); } } // Using a DependencyProperty as the backing store for Item. This enables animation, styling, binding, etc... public static readonly DependencyProperty ItemProperty = DependencyProperty.Register("Item", typeof(object), typeof(MainWindow), new UIPropertyMetadata(null)); public bool IsHidden { get { return (bool)GetValue(IsHiddenProperty); } set { SetValue(IsHiddenProperty, value); } } // Using a DependencyProperty as the backing store for IsHidden. This enables animation, styling, binding, etc... public static readonly DependencyProperty IsHiddenProperty = DependencyProperty.Register("IsHidden", typeof(bool), typeof(MainWindow), new UIPropertyMetadata(false)); public MainWindow() { InitializeComponent(); this.DataContext = this; } private void Button_Click(object sender, RoutedEventArgs e) { IsHidden = !IsHidden; } private void Button_Click_1(object sender, RoutedEventArgs e) { if (!isItemSet) Item = new MyObject(); else Item = null; isItemSet = !isItemSet; }}
MyObject:
public class MyObject { [Display(Name = "Name1", GroupName = "Details1", Order = 5, Prompt = "tttt"), Browsable(true)] public string Name1 { get; set; } [Display(Name = "Name2", GroupName = "Details1", Order = 5, Prompt = "tttt"), Browsable(true)] public string Name2 { get; set; } [Display(Name = "Name3", GroupName = "Details2", Order = 5, Prompt = "tttt"), Browsable(true)] public string Name3 { get; set; } [Display(Name = "Name4", GroupName = "Details2", Order = 5, Prompt = "tttt"), Browsable(true)] public string Name4 { get; set; } [Display(Name = "Name5", GroupName = "Details2", Order = 5, Prompt = "tttt"), Browsable(true)] public string Name5 { get; set; } [Display(Name = "Name6", GroupName = "Details2", Order = 5, Prompt = "tttt"), Browsable(true)] public string Name6 { get; set; } [Display(Name = "Name7", GroupName = "Details2", Order = 5, Prompt = "tttt"), Browsable(true)] public string Name7 { get; set; } [Display(Name = "Name8", GroupName = "Details2", Order = 5, Prompt = "tttt"), Browsable(true)] public string Name8 { get; set; } [Display(Name = "Name9", GroupName = "Details2", Order = 5, Prompt = "tttt"), Browsable(true)] public string Name9 { get; set; } [Display(Name = "Name10", GroupName = "Details2", Order = 5, Prompt = "tttt"), Browsable(true)] public string Name10 { get; set; } [Display(Name = "Name11", GroupName = "Details3", Order = 6, Prompt = "tttt"), Browsable(true)] public string Name11 { get; set; } [Display(Name = "Name12", GroupName = "Details3", Order = 6, Prompt = "tttt"), Browsable(true)] public string Name12 { get; set; } [Display(Name = "Name13", GroupName = "Details3", Order = 6, Prompt = "tttt"), Browsable(true)] public string Name13 { get; set; } [Display(Name = "Name14", GroupName = "Details3", Order = 6, Prompt = "tttt"), Browsable(true)] public string Name14 { get; set; } [Display(Name = "Name15", GroupName = "Details3", Order = 6, Prompt = "tttt"), Browsable(true)] public string Name15 { get; set; } [Display(Name = "Name16", GroupName = "Details3", Order = 6, Prompt = "tttt"), Browsable(true)] public string Name16 { get; set; } [Display(Name = "Name17", GroupName = "Details4", Order = 7, Prompt = "tttt"), Browsable(true)] public string Name17 { get; set; } [Display(Name = "Name18", GroupName = "Details4", Order = 7, Prompt = "tttt"), Browsable(true)] public string Name18 { get; set; } [Display(Name = "Name19", GroupName = "Details4", Order = 7, Prompt = "tttt"), Browsable(true)] public string Name19 { get; set; } [Display(Name = "Name20", GroupName = "Details4", Order = 7, Prompt = "tttt"), Browsable(true)] public string Name20 { get; set; } [Display(Name = "Name21", GroupName = "Details5", Order = 7, Prompt = "tttt"), Browsable(true)] public string Name21 { get; set; } [Display(Name = "Name22", GroupName = "Details5", Order = 7, Prompt = "tttt"), Browsable(true)] public string Name22 { get; set; } [Display(Name = "Name23", GroupName = "Details5", Order = 7, Prompt = "tttt"), Browsable(true)] public string Name23 { get; set; } [Display(Name = "Name24", GroupName = "Details5", Order = 7, Prompt = "tttt"), Browsable(true)] public string Name24 { get; set; } [Display(Name = "Name25", GroupName = "Details5", Order = 7, Prompt = "tttt"), Browsable(true)] public string Name25 { get; set; } [Display(Name = "Name26", GroupName = "Details5", Order = 7, Prompt = "tttt"), Browsable(true)] public string Name26 { get; set; } [Display(Name = "Name27", GroupName = "Details5", Order = 7, Prompt = "tttt"), Browsable(true)] public string Name27 { get; set; } [Display(Name = "Name28", GroupName = "Details5", Order = 7, Prompt = "tttt"), Browsable(true)] public string Name28 { get; set; } [Display(Name = "Name29", GroupName = "Details5", Order = 7, Prompt = "tttt"), Browsable(true)] public string Name29 { get; set; } [Display(Name = "Name30", GroupName = "Details5", Order = 7, Prompt = "tttt"), Browsable(true)] public string Name30 { get; set; } [Display(Name = "Name31", GroupName = "Details5", Order = 7, Prompt = "tttt"), Browsable(true)] public string Name31 { get; set; } [Display(Name = "Name32", GroupName = "Details5", Order = 7, Prompt = "tttt"), Browsable(true)] public string Name32 { get; set; } [Display(Name = "Name33", GroupName = "Details5", Order = 7, Prompt = "tttt"), Browsable(true)] public string Name33 { get; set; } [Display(Name = "Name34", GroupName = "Details5", Order = 7, Prompt = "tttt"), Browsable(true)] public string Name34 { get; set; } [Display(Name = "Name35", GroupName = "Details5", Order = 7, Prompt = "tttt"), Browsable(true)] public string Name35 { get; set; } [Display(Name = "Name36", GroupName = "Details5", Order = 7, Prompt = "tttt"), Browsable(true)] public string Name36 { get; set; } [Display(Name = "Name37", GroupName = "Details5", Order = 7, Prompt = "tttt"), Browsable(true)] public string Name37 { get; set; } [Display(Name = "Name38", GroupName = "Details5", Order = 7, Prompt = "tttt"), Browsable(true)] public string Name38 { get; set; } [Display(Name = "Name39", GroupName = "Details5", Order = 7, Prompt = "tttt"), Browsable(true)] public string Name39 { get; set; } [Display(Name = "Name40", GroupName = "Details5", Order = 7, Prompt = "tttt"), Browsable(true)] public string Name40 { get; set; } [Display(Name = "Name41", GroupName = "Details5", Order = 7, Prompt = "tttt"), Browsable(true)] public string Name41 { get; set; } [Display(Name = "Name42", GroupName = "Details5", Order = 7, Prompt = "tttt"), Browsable(true)] public string Name42 { get; set; } [Display(Name = "Name43", GroupName = "Details5", Order = 7, Prompt = "tttt"), Browsable(true)] public string Name43 { get; set; } [Display(Name = "Name44", GroupName = "Details5", Order = 7, Prompt = "tttt"), Browsable(true)] public string Name44 { get; set; } [Display(Name = "Name45", GroupName = "Details5", Order = 7, Prompt = "tttt"), Browsable(true)] public string Name45 { get; set; } [Display(Name = "Name46", GroupName = "Details5", Order = 7, Prompt = "tttt"), Browsable(true)] public string Name46 { get; set; } [Display(Name = "Name47", GroupName = "Details5", Order = 7, Prompt = "tttt"), Browsable(true)] public string Name47 { get; set; } [Display(Name = "Name48", GroupName = "Details5", Order = 7, Prompt = "tttt"), Browsable(true)] public string Name48 { get; set; } }
PropertiesControl.xaml:
<UserControl x:Class="RadPropertyGridPerformanceIssue1.PropertiesControl" xmlns:telerk="http://schemas.telerik.com/2008/xaml/presentation" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300"> <Grid> <telerk:RadPropertyGrid Item="{Binding Item}" DescriptionPanelVisibility="Collapsed"/> </Grid></UserControl>
If you click the first button and then the second button over and over again, then you would notice that the property grid becomes slower and slower, and that the Telerik.Windows.Data.WeakEvent+WeakListener`1.Handler() is being called more than once, event though OnCollectionChanged was called only once.
On Telerik 2016.Q2 the problem was even worse. The OnCollectionChanged would be called as the number of properties the object has.
Hi,
I am storing the user changes in the PDF viewer for multiple PDFs.
For zoom, there is the ScaleFactorChanged event.
It seems there is no event exposed for Rotation, like RotationChanged?
How is it possible to store the information when the user changes the rotation?
As a workaround, I now check the rotation with :
DetailPdfViewer.CommandDescriptors.RotateClockwiseCommandDescriptor.Command.CanExecuteChanged += OnRotationChanged;
and then get DetailPdfViewer.RotationAngle, but this seems really hacky to me. It just triggers to often, so I do not like having this in production too long.
Best regards,
Kevin

Hello,
I am having an issue with reordering multiple selected items in a RadListBox. I am trying to select multiple items in a RadListBox, and drag them within the same RadListBox to reorder them. However, it doesn't always work. When I start to drag, sometimes I will be able to reorder the items (cursor indicator and drop visual indicator in the RadListBox show normally), and sometimes it won't. The drag visual always works normally, but it looks like AllowDrop is immediately false sometimes (not sure if that is what is actually happening, but it's the best way I can describe it). I have a test RadListBox for theme visual feedback and testing, and the behavior is happening there. Here is the code I am using:
<telerik:RadListBox SelectionMode="Extended"> <telerik:RadListBoxItem Content="Item 1" Style="{DynamicResource ReorderableListItemStyle}"/> <telerik:RadListBoxItem Content="Item 2" Style="{DynamicResource ReorderableListItemStyle}"/> <telerik:RadListBoxItem Content="Item 3" Style="{DynamicResource ReorderableListItemStyle}"/> <telerik:RadListBoxItem Content="Item 4" Style="{DynamicResource ReorderableListItemStyle}"/> <telerik:RadListBoxItem Content="Item 5" Style="{DynamicResource ReorderableListItemStyle}"/> <telerik:RadListBoxItem Content="Item 6" Style="{DynamicResource ReorderableListItemStyle}"/> <telerik:RadListBoxItem Content="Item 7" Style="{DynamicResource ReorderableListItemStyle}"/> <telerik:RadListBoxItem Content="Item 8" Style="{DynamicResource ReorderableListItemStyle}"/> <telerik:RadListBox.DragDropBehavior> <telerik:ListBoxDragDropBehavior/> </telerik:RadListBox.DragDropBehavior></telerik:RadListBox>
And here is the code for ReorderableListItemStyle:
<Style x:Key="ReorderableListItemStyle" TargetType="telerik:RadListBoxItem" BasedOn="{StaticResource RadListBoxItemStyle}"> <Setter Property="telerik:DragDropManager.AllowCapturedDrag" Value="True" /></Style>
Is there something I am missing? I am using Telerik WPF R3 2020.



I'm trying to pass a Telerik CrystalPalette to a Sub but I get an error "...is class type and can not be used as an expression". Hints?
Public Function DoSomething() As Boolean ApplyThemeFontSizes(CrystalTheme)End FunctionPrivate Sub ApplyThemeFontSizes(Of T)() Try T.Palette.FontSizeXS = 8 + Me.FontOffset T.Palette.FontSizeS = 10 + Me.FontOffset T.Palette.FontSize = 12 + Me.FontOffset T.Palette.FontSizeL = 14 + Me.FontOffset T.Palette.FontSizeXL = 16 + Me.FontOffset Catch ex As Exception ' TODO: Log error to file (possible the Theme doesn't have a "Palette") End Try End Sub
NotifyIcon does not showing for Core project with TargetFramework net452 or higher
TestNotifyIcon.csproj
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net452</TargetFramework>
<UseWPF>true</UseWPF>
<ApplicationIcon>Dashboard.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<None Remove="Dashboard.ico" />
</ItemGroup>
<ItemGroup>
<Reference Include="Telerik.Windows.Controls">
<HintPath>..\Telerik.Windows.Controls.dll</HintPath>
</Reference>
<Reference Include="Telerik.Windows.Controls.Navigation">
<HintPath>..\Telerik.Windows.Controls.Navigation.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Resource Include="Dashboard.ico" />
</ItemGroup>
</Project>
MainWindow.xaml
<Window x:Class="TestNotifyIcon.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
Title="MainWindow" Height="450" Width="800"
x:Name="_this">
<Grid>
<TextBlock x:Name="MessageTextBlock"
TextAlignment="Center"
VerticalAlignment="Center"
Text="Test"/>
<telerik:RadNotifyIcon x:Name="NotifyIcon"
ShowTrayIcon="True"
TooltipContent="{Binding Title, ElementName=_this, Mode=OneWay}"
TrayIconSource="/TestNotifyIcon;component/Dashboard.ico"
PopupActivationMouseEvent="All"
PopupContent="{Binding Text, ElementName=MessageTextBlock, Mode=OneWay}">
</telerik:RadNotifyIcon>
</Grid>
</Window>

Hello All,
After hours of digging through the forums and help pages and examples, I have NOT found a complete example of how to bind a RadRichTextBox to a viewmodel property. I would like to see a complete example , all the XAML and all the code in the viewmodel to setup the binding. I think it should be fairly easy , all I want to do is display some simple text from my database (it's a property in the viewmodel) in a RadRichTextBox... I'm sure I'll have to use a TxtFormatProvider for the control, but I can't seem to find a complete example of how to do this to bind to a viewmodel property. The viewmodel property gets set on the viewmodels object instantiation . I have looked at the Developer Focused Examples and found the data binding example , but that's not a View-View Model example.
Thanks in advance,
Kevin
Orcutt
Senior Software Engineer
Wurth Electronics ICS, Inc.
7496 Webster St., Dayton, OH 45414
Tel: 937.415.7700
Toll Free: 877.690.2207
Fax: 937.415.7710
Email: kevin.orcutt@we-ics.com
http://www.we-ics.com

Since you folks don't provide any Telerik Label or TextBox controls, we have to use the Microsoft default controls which I then find out will NOT be themed via StyleManager per this link.
If using the XML approach, how are we supposed to use themes without key support for two of the most fundamental and basic controls like Label and TextBox?
It makes the entire purpose of "Application level" themes useless without this basic support.
Am I missing something?
Rob.