When using the RadToggleSwitchButton and the CheckedContent and UncheckedContent properties are not utilized, in some themes, the on and off states cannot be correctly distinguished. For example, the track or the thumb does not indicate whether the button is checked or not.
Themes, in which this is present are the following ones:
NullReferenceException is thrown if you set the IsChecked property of the RadToggleSwitchButton before the button is added to the visual tree. This happens only when the switch animation is disabled.
To work this around, you can set the AnimationManager.IsAnimationEnabled property of the button to True initially. And then set it back to False on Loaded of the button.
RadToggleSwitchButton: The animation of the thumb switch updates its position when the animation finishes. This happens with a slight delay. However, if the animation is disabled, this delay should not be executed. Instead, the thumb should be updated immediately.
Currently, the delay can causes an animation-like effect in some specific situations.
To work this around, you can create a custom RadToggleSwitchButton and override the property changed callback of the IsChecked property.
public class CustomToggleSwitchButton : RadToggleSwitchButton
{
private FrameworkElement thumb;
static CustomToggleSwitchButton()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomToggleSwitchButton), new FrameworkPropertyMetadata(typeof(CustomToggleSwitchButton)));
IsCheckedProperty.OverrideMetadata(typeof(CustomToggleSwitchButton), new FrameworkPropertyMetadata(OnIsCheckedPropertyChanged));
}
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
this.thumb = this.GetTemplateChild("PART_Thumb") as FrameworkElement;
}
private static void OnIsCheckedPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var switchButton = (CustomToggleSwitchButton)d;
if (switchButton.thumb == null)
{
return;
}
bool? isChecked = e.NewValue as bool?;
if (isChecked == true)
{
switchButton.thumb.HorizontalAlignment = HorizontalAlignment.Right;
}
else if (isChecked == false)
{
switchButton.thumb.HorizontalAlignment = HorizontalAlignment.Left;
}
else if (switchButton.IsThreeState)
{
switchButton.thumb.HorizontalAlignment = HorizontalAlignment.Center;
}
}
}
The UI freezes if the DropDownContent of RadDropDownButton has a native Run element and the CloseOnPopupMouseLeftButtonUp property is set to True.
If you have a tooltip on a button and focus the button before hovering it, the tooltip is not shown
The application hangs when you click on a Label element placed in the DropDownContent of RadSplitButton. In order to recreate this the content of the Label should contain an underscore character, thus enabling the access text WPF functionality. Also, the CloseOnPopupMouseLeftButtonUp property should be set to True.
This behavior can be reproduced with any element that is not derived from FrameworkElement. The issue in this case appear because when the access text is enabled, the Label control produces Run elements in its visual tree. The Run class doesn't derive from FrameworkElement, but from FrameworkContentElement, which causes the issue.
To work this around, use TextBlock instead of Label.
A StackOverflowException occurs when you press a RadDropDownButton placed into the DropDownContent of another RadDropButton. To work this around, subscribe for the LostMouseCapture event of the parent drop down button and handle it. private void DropDownButton_LostMouseCapture(object sender, MouseEventArgs e) { e.Handled = true; }
To avoid this, handle the scrolling of the ScrollViewer when the dropdown content is opened. This behavior is already implemented in RadComboBox by overriding its OnMouseWheel method and handling the event arguments.
To work this around subscribe to the MouseWheel event of RadDropDownButton and set the Handled property of the event arguments to True.
private void RadDropDownButton_MouseWheel(object sender, MouseWheelEventArgs e)
{
var btn = (RadDropDownButton)sender;
if (btn.IsOpen)
{
e.Handled = true;
}
}
The current workaround we can offer is to define the following style for the RadioButton element: <Style TargetType="RadioButton" BasedOn="{StaticResource RadioButtonStyle}"> <Style.Triggers> <Trigger Property="IsChecked" Value="True"> <Setter Property="BorderBrush" Value="{telerik1:FluentResource ResourceKey=AccentBrush}" /> </Trigger> </Style.Triggers> </Style> Where xmlns:telerik1="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls"
Custom property values for BorderThickness and BorderBrush are replaced after button click. To reproduce, use the following code, you'll see that a highlighted border appears after clicking the button. <telerik:RadButton Background="Gray" Foreground="White" BorderThickness="0" BorderBrush="Transparent" Content="click me" HorizontalAlignment="Center" VerticalAlignment="Center" /> Reason for declination: The border that you see is the focused state of RadButton, which is a separate visual and its BorderThickness is not template-bound to the BorderThickness of the control intentionally. We believe that a control should have focus even if its default border is removed. In our latest themes we are trying to keep this behavior. In the Office2016 theme there is an exposed palette property, which you can use in code-behind if you want to remove the focus: Office2016Palette.Palette.FocusThickness = new Thickness(0);
MouseLeave event is never fired after we change the Them of the controls from a control located in the DropDownContent. Therefor the controls IsMouseOver property is true and looks like it is hovered.
Arg_COMException in some cases when used with RoutedUICommand
Update the Buttons AutomationPeer to use the AutomationProperties attached properties. As a workaround you can create a custom button control deriving from RadButton. That would allow you to create a custom AutomationPeer class that can return the AutmationProperties.Name value to a narrator application
When a RadMenu/RadContextMenu is used as DropDownContent of a SplitButton/DropDownButton, the DropDownContent cannot be closed after sub menu items are displayed
SplitButton throws a design time exception with implicit styles if you've included Diagrams.Extensions.xaml