The cell highlighting doesn't work if the ItemsSourceProvider.ItemsSource is set at runtime, while the drop down is open. The filtering of the items works, but the cell content is not colored.
To work this around, make sure to set the ItemsSource before the drop down gets opened.
private void ScrollViewer_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
if (sender is ListBox && !e.Handled)
{
e.Handled = true;
var eventArg = new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta);
eventArg.RoutedEvent = UIElement.MouseWheelEvent;
eventArg.Source = sender;
var parent = ((Control)sender).Parent as UIElement;
parent.RaiseEvent(eventArg);
}
}
When biding IsVisible of column in RadMultiColumnComboBox/GridViewItemsSourceProvider using MVVM pattern, the binding won't work initially, but is works as expected if removing the ElementName and adding it back in the below example xaml using debugger.
PS1. The binding for CheckBox(in the below sample) works with issue but not for RadMultiColumnComboBox
PS2. Also attached full sample code.
<Window x:Class="TestProject.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"
xmlns:local="clr-namespace:TestProject"
Title="MainWindow" Height="350" Width="525">
<Grid Margin="0,0,0,20" x:Name="rootGrid">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Button Grid.Row="0" Command="{Binding ToggleCmd}">Toggle Last Name Visible</Button>
<CheckBox Grid.Row="1" IsChecked="{Binding IsLastNameVisible}">Is Last Name Visible</CheckBox>
<telerik:RadMultiColumnComboBox Grid.Row="2">
<telerik:RadMultiColumnComboBox.ItemsSourceProvider>
<telerik:GridViewItemsSourceProvider ItemsSource="{Binding AllClubs}" AutoGenerateColumns="false" >
<telerik:GridViewItemsSourceProvider.Columns>
<telerik:GridViewDataColumn DataMemberBinding="{Binding FirstName}" />
<telerik:GridViewDataColumn DataMemberBinding="{Binding LastName}"
IsVisible="{Binding DataContext.IsLastNameVisible , ElementName=rootGrid}" />
</telerik:GridViewItemsSourceProvider.Columns>
</telerik:GridViewItemsSourceProvider>
</telerik:RadMultiColumnComboBox.ItemsSourceProvider>
</telerik:RadMultiColumnComboBox>
</Grid>
</Window>
NotImplementedException is thrown if the ItemsSourceProvider property is set in a Style setter.
To work this around, implement custom GridViewItemsSourceProvider and override its CreateInstanceCore method.
public class CustomGridViewItemsSourceProvider : GridViewItemsSourceProvider
{
protected override Freezable CreateInstanceCore()
{
return new CustomGridViewItemsSourceProvider();
}
}