CommandBarSplitButton and CommandBarDropDownButton should implement IItemsOwner interface.
Add a command bar button with the following configuration: DrawText = true; Text = "&New"; UseMnemonic = true; ShowKeyboardCues = true; and try to click it with Alt + N. You will see that you cannot.
The ItemClicked event of CommandBarStripElement does not fire when the strip is floating.
Visual Studio's property window allow you to assign these properties the value of (none) or null. This will result in exception when the designer is reopened.
In some cases, when you type on a CommandBarTextBox, its Text property does not get updated.
FIX. CommandBarDropDownList - the control Text property does not return the entered text in the editable area
To reproduce: Add a row and a strip to the command bar, add items, set tooltips, make them hide in the overflow menu, they do not show their tooltips. Workaround: this.commandBar.Rows[0].Strips[0].OverflowButton.DropDownMenu.ToolTipTextNeeded += DropDownMenu_ToolTipTextNeeded; this.commandBar.Rows[0].Strips[0].OverflowButton.DropDownMenu.MouseMove += DropDownMenu_MouseMove; Point mousePosition = new Point(); void DropDownMenu_MouseMove(object sender, MouseEventArgs e) { this.mousePosition = e.Location; } void DropDownMenu_ToolTipTextNeeded(object sender, ToolTipTextNeededEventArgs e) { this.commandBar.Rows[0].Strips[0].OverflowButton.DropDownMenu.Owner = this; mousePosition.X += this.commandBar.Rows[0].Strips[0].Size.Width; mousePosition.Y += this.commandBar.Rows[0].Strips[0].Size.Height + 20; new ToolTip().Show("bbbb", this.commandBar, mousePosition, 1000); }
To reproduce: 1.Add RadCommandBar with one CommandBarStripElement and items to a form 2.Float the strip 3.Save the layout 4.Close the form 5.Open the form 6.Load the layout
Description:If I set the VisibleInStrip property on a CommandBarButton to false, I can still click on the button. To reproduce: 1.First Scenario: -add a RadCommandBar with one CommandBarStripElement; -add 3 CommandBarButtons separated by CommandBarSeparator; -add Click event handler to each button; -set VisibleInStrip=false to the second button of the CommandBarButtons; Try to click the area between the existing two CommandBarSeparators; As a result the Click event is fired for the hidden second button. 2.Second Scenario: -add a RadCommandBar with one CommandBarStripElement; -add 3 CommandBarButtons; -add Click event handler to each button; -set VisibleInStrip=false to the second button of the CommandBarButtons; In some cases clicking the area over the first button fires the Click event of the hidden button. Workaround: Use commandBarButton1.Visibility = ElementVisibility.Collapsed;
To reproduce: -add CommandBarDropDownButton and add several items of type RadMenuButtonItem; -use the following code: this.commandBarDropDownButton1.DropDownMenu.DropDownClosed += DropDownMenu_DropDownClosed; private void DropDownMenu_DropDownClosed(object sender, Telerik.WinControls.UI.RadPopupClosedEventArgs args) { RadDropDownMenu dropDownMenu = sender as RadDropDownMenu; if (dropDownMenu != null) { CommandBarDropDownButton commandBarDropDownButton = dropDownMenu.Owner as CommandBarDropDownButton; commandBarDropDownButton.Text = dropDownMenu.ClickedItem.Text.ToString(); } } ClickedItem is null only in case of RadMenuButtonItem. Workaround: public class CustomCommandBarDropDownButton : CommandBarDropDownButton { protected override void CreateChildElements() { base.CreateChildElements(); this.DropDownMenu = new CustomDropDownMenu(this); } protected override Type ThemeEffectiveType { get { return typeof(CommandBarDropDownButton); } } } public class CustomDropDownMenu : RadDropDownMenu { public CustomDropDownMenu(RadElement ownerElement) : base(ownerElement, null) { } public override string ThemeClassName { get { return typeof(RadDropDownMenu).FullName; } } protected override void OnMouseClick(MouseEventArgs e) { RadMenuItemBase menuItem = this.GetMenuItemAtPoint(e.Location); if (menuItem is RadMenuButtonItem) { FieldInfo field = typeof(RadDropDownMenu).GetField("clickedItem", BindingFlags.NonPublic | BindingFlags.Instance); field.SetValue(this, menuItem); } base.OnMouseClick(e); } }
To reproduce: - add command bar to a form and dock it top - add button below the command bar and dock it fill - click the command bar and try to open the Rows collection editor from the properties window
PopUpOpened event does not fire then the CommandBarDropDownList is created runtime.
FIX. RadCommandBar - selecting default item for CommandBarSplitButton prevents the drop down from being opened
To reproduce: radCommandBar1.Dock = DockStyle.Left; CommandBarToggleButton toggleButton = new CommandBarToggleButton(); toggleButton.Text = "some text"; toggleButton.Orientation = Orientation.Vertical; toggleButton.DrawText = true; radCommandBar1.Rows[0].Strips[0].Items.Add(toggleButton); radCommandBar1.Rows[0].Strips[0].Orientation = Orientation.Vertical;
Description: add a RadCommandBar and Dock it to the Left. Add several CommandBarToggleButton and CommandBarButton items and set their StretchHorizontally property to true and StretchVertically property to false. Save changes, close the designer and open it again. The settings are not kept.
When you change the ImageList property of RadCommandBar at runtime, the images of the items are not updated. In addition, if there are items in the overflow popup, their image is reset to default. WORKAROUND: You need to reset each item's ImageIndex property in order for the new image to appear and you also need to update the ImageList property of the overflow popups manually. private void radCheckBox1_ToggleStateChanged(object sender, StateChangedEventArgs args) { radCommandBar1.ImageList = radCheckBox1.Checked ? imageList32 : imageList16; ToggleImageIndices(); } private void ToggleImageIndices() { foreach (var row in radCommandBar1.Rows) { foreach (var strip in row.Strips) { ((RadControl)strip.OverflowButton.OverflowPanel.Layout.ElementTree.Control).ImageList = radCommandBar1.ImageList; foreach (var item in strip.Items) { int oldIndex = item.ImageIndex; item.ImageIndex = -1; item.ImageIndex = oldIndex; } foreach (var item in strip.OverflowButton.OverflowPanel.Layout.Children.OfType<RadCommandBarBaseItem>()) { int oldIndex = item.ImageIndex; item.ImageIndex = -1; item.ImageIndex = oldIndex; } } } }
Workaround: use the following approach: private void commandBarDropDownList1_EnabledChanged(object sender, EventArgs e) { if (this.commandBarDropDownList1.Enabled) { this.commandBarDropDownList1.DropDownListElement.TextBox.BackColor = Color.White; } else { this.commandBarDropDownList1.DropDownListElement.TextBox.TextBoxItem.BackColor = Color.FromArgb(210, 210, 210); } }
Since the IsChecked property is obsolete one cannot use simple data binding to bind the control.
To reproduce: Add a RadCommandBar, add some rows, strips and buttons. Apply any of the following themes: Office2010Black, Office2010Blue or VisualStudio2012Light . You will notice that the whole RadCommandBar has no theming. Workaround: Download the theme files below and apply them as follows: ThemeResolutionService.LoadPackageFile(@"themPath/theme.tssp"); ThemeResolutionService.ApplicationThemeName = "VisualStudio2012Light";
To reproduce: Add a RadCommandBar with a row and a strip. Add a CommandBarSplitButton and subscribe to its Click event. You will see that when you click the arrow button the event will be fired. In result you cannot distinguish whether the arrow button is clicked. Workaround: private bool arrowButtonClicked; void ArrowPart_Click(object sender, EventArgs e) { this.arrowButtonClicked = true; //... CommandBarSplitButton.ArrowPart logic } void button_Click(object sender, EventArgs e) { if (this.arrowButtonClicked) { this.arrowButtonClicked = false; return; } //...CommandBarSplitButton logic }