private void RadMultiColumnComboBox_Loaded(object sender, RoutedEventArgs e)
{
var mccb = (RadMultiColumnComboBox)sender;
var selection = mccb.SelectedItem;
mccb.SetCurrentValue(RadMultiColumnComboBox.SelectedItemProperty, null);
mccb.SetCurrentValue(RadMultiColumnComboBox.SelectedItemProperty, selection);
}
When the SelectionMode of MultiColumnComboBox is set to Single, changing the Selection invokes twice the SelectionChanged event.
What I would expect is that the event fires only once, with one item in AddedItems and one item in RemovedItems. Currently, addition and removal is done seperately, and the two invocations of the event correspond to them.
To reproduce, just use the Getting Started article about MultiColumnComboBox with the Clubs ItemSource. Subscribe to SelectionChanged event and make a change to the selection. I hope the following gif makes this clear - the first selection is valid, but the second should invoke the event only once, with 1 item added, 1 removed.
The drop-down menu does not close when a context menu is opened on top of it, even if the KeepDropDownOpen="False". The control would need to move the focus in order for the drop-down to close.
To work this around, you can use the CloseDropDown() method of the MultiColumnComboBox control.
When placing controls in the CellTemplate/CellEditTemplate in the RadMultiColumnComboBox`s dropdown`s GridView some do not receive/accept the mouse input correctly.
In the newest version (2021.2.615) the dropdown of a RadDatePicker does not open. A RadButton works fine and a RadComboBox open and can select an item via mouse click.
In a previous version (2021.1.325) the RadComboBox also does not work, this seems to be fixed already.
I have attached a sample project demonstrating the behavio:
1) start the project
2) open the dropdown of the RadMultiColumnComboBox
3) click on the RadDatePicker`s calender icon button. => the calender view does not open
The very same DataTemplate is applied obove the RadMultiColumnComboBox to illustrate the proper behavior in contrast.
The behavior is visually demonstrated in the .gif (1.gif and 2.gif) I have attached.
If you host RadMultiColumnComboBox in a control with a vertical ScrollViewer, then open the popup content of the RadMultiColumnComboBox and use the mouse wheel in it, the parent ScrollViewer scrolls. In comparison RadComboBox and the native WPF ComboBox are not scrolling. Instead the scrolling event is consumed and it doesn't propagate to the parent ScrollViewer.
The attached project shows one way to work this around.
Remove the possibility for one or more rows to be searched on.
In other words, it should not be possible to select disabled item rows by search.
If you select an item in RadMultiColumnComboBox and then replace the ItemsSource of the GridViewItemsSourceProvider, the selection in the autocompletebox part of the the control is not cleared. There are items that are still selected and are not presented in the ItemsSource.
To work this around, you can create a custom GridViewItemsSourceProvider and override its OnPropertyChanged method. When the ItemsSource is changed, you can reset the selection.
public class CustomGridViewItemsSourceProvider : GridViewItemsSourceProvider
{
public RadMultiColumnComboBox Owner
{
get { return (RadMultiColumnComboBox)GetValue(OwnerProperty); }
set { SetValue(OwnerProperty, value); }
}
public static readonly DependencyProperty OwnerProperty =
DependencyProperty.Register(
"Owner",
typeof(RadMultiColumnComboBox),
typeof(CustomGridViewItemsSourceProvider),
new PropertyMetadata(null));
protected override void OnPropertyChanged(DependencyPropertyChangedEventArgs e)
{
base.OnPropertyChanged(e);
if (e.Property.Name == "ItemsSource" && this.Owner != null)
{
this.Owner.SelectionBridge.ClearOwnerSelection();
}
}
}
<telerik:RadMultiColumnComboBox.ItemsSourceProvider>
<local:CustomGridViewItemsSourceProvider Owner="{Binding ElementName=mccb}" />
</telerik:RadMultiColumnComboBox.ItemsSourceProvider>
The following error is thrown when the dropdown of the control is opened: Cannot find governing FrameworkElement or FrameworkContentElement for target element. ... ; target element is 'GridViewItemsSourceProvider; target property is 'ItemsSource' (type 'Object')
If the combobox is placed inside a RadGridView, the error is thrown each time the dropdown is opened (after a commit action).
It would be usefull to have a Property on the RadMultiColumnComboBox which represents the inputted searchtext. This Property should be TwoWay-Bindable.
A usecase for it could be to programmatically manipulate the searchtext.
For example setting it to NULL on LostFocus:
private void mccb_LostFocus(object sender, RoutedEventArgs e)
{
this.mccb.ChildrenOfType<RadWatermarkTextBox>().First().Text = string.Empty;
}
Instead of hacking around with the visualTree etc. one could simply bind the property. This would also be MVVM compliant.
Proposed Name for the Property "SearchText".
The Validation.ErrorTemplate attached property is not set. To workaround this, you can use the following resource.
<ControlTemplate x:Key="ValidationTooltipTemplate">
<Grid SnapsToDevicePixels="True" VerticalAlignment="Top">
<Border Background="Transparent" HorizontalAlignment="Right" VerticalAlignment="Top" Width="3" Height="3"/>
<AdornedElementPlaceholder x:Name="Holder"/>
<Border BorderBrush="{StaticResource ValidationTooltipOuterBorder}" BorderThickness="1" CornerRadius="{StaticResource ValidationTooltip_CornerRadius}"/>
<Path Data="M2,1 L6,1 6,5 Z" Fill="{StaticResource ValidationInnerTick}" Width="7" Height="7" HorizontalAlignment="Right" VerticalAlignment="Top"/>
<Path Data="M0,0 L2,0 7,5 7,7 Z" Fill="{StaticResource ValidationOuterTick}" Width="7" Height="7" HorizontalAlignment="Right" VerticalAlignment="Top"/>
<ToolTipService.ToolTip>
<ToolTip x:Name="PART_ToolTip"
DataContext="{Binding RelativeSource={RelativeSource Mode=Self}, Path=PlacementTarget.DataContext}"
Template="{StaticResource ErrorTooltipTemplate}"
Placement="Right"/>
</ToolTipService.ToolTip>
</Grid>
</ControlTemplate>
<Style TargetType="telerik:RadMultiColumnComboBox" BasedOn="{StaticResource RadMultiColumnComboBoxStyle}">
<Setter Property="Validation.ErrorTemplate" Value="{StaticResource ValidationTooltipTemplate}" />
</Style>