Hi,
I have a problem with RadListBox that I think is a bug.
If styles MergedDictionaries in App.xaml and remove selected item not problem only problem styles MergedDictionaries in MainWindow.xaml remove item exception error.
Microsoft listbox in both cases no problem.
Please see uploaded project.
http://www.solidfiles.com/d/c9a834481c
Thanks so much.
Style:
<
ResourceDictionary
xmlns:telerik
=
"http://schemas.telerik.com/2008/xaml/presentation"
<
ResourceDictionary.MergedDictionaries
>
<
ResourceDictionary
Source
=
"Brushes.xaml"
/>
</
ResourceDictionary.MergedDictionaries
>
<!--CONTACT LIST BOX ITEM STYLE -->
<
ControlTemplate
TargetType
=
"telerik:RadListBoxItem"
x:Key
=
"ListBoxItemTemplate"
>
<
Grid
>
<
VisualStateManager.VisualStateGroups
>
<
VisualStateGroup
x:Name
=
"CommonStates"
>
<
VisualState
x:Name
=
"Normal"
/>
<
VisualState
x:Name
=
"MouseOver"
/>
<
VisualState
x:Name
=
"Disabled"
/>
</
VisualStateGroup
>
<
VisualStateGroup
x:Name
=
"SelectionStates"
>
<
VisualStateGroup.Transitions
>
<
VisualTransition
GeneratedDuration
=
"0:0:0.3"
>
<
VisualTransition.GeneratedEasingFunction
>
<
CircleEase
EasingMode
=
"EaseOut"
/>
</
VisualTransition.GeneratedEasingFunction
>
</
VisualTransition
>
</
VisualStateGroup.Transitions
>
<
VisualState
x:Name
=
"Unselected"
/>
<
VisualState
x:Name
=
"Selected"
>
<
Storyboard
>
<
DoubleAnimation
Duration
=
"0"
To
=
"200"
Storyboard.TargetProperty
=
"(FrameworkElement.Height)"
Storyboard.TargetName
=
"selectedGrid"
/>
</
Storyboard
>
</
VisualState
>
</
VisualStateGroup
>
<
VisualStateGroup
x:Name
=
"FocusStates"
>
<
VisualStateGroup.Transitions
>
<
VisualTransition
GeneratedDuration
=
"0:0:0.3"
>
<
VisualTransition.GeneratedEasingFunction
>
<
CircleEase
EasingMode
=
"EaseOut"
/>
</
VisualTransition.GeneratedEasingFunction
>
</
VisualTransition
>
</
VisualStateGroup.Transitions
>
<
VisualState
x:Name
=
"Focused"
>
<
Storyboard
>
<!--DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="focus"/>-->
</
Storyboard
>
</
VisualState
>
<
VisualState
x:Name
=
"Unfocused"
/>
</
VisualStateGroup
>
<
VisualStateGroup
x:Name
=
"ValidationStates"
/>
</
VisualStateManager.VisualStateGroups
>
<
Border
x:Name
=
"border"
BorderThickness
=
"{TemplateBinding BorderThickness}"
Background
=
"#FF434343"
BorderBrush
=
"#FF767676"
>
<
Grid
>
<
Grid.RowDefinitions
>
<
RowDefinition
Height
=
"Auto"
/>
<
RowDefinition
Height
=
"Auto"
/>
<
RowDefinition
Height
=
"Auto"
/>
</
Grid.RowDefinitions
>
<
Grid
x:Name
=
"readOnlyGrid"
Height
=
"60"
Margin
=
"1,0,0,0"
>
<
Grid.ColumnDefinitions
>
<
ColumnDefinition
Width
=
"Auto"
/>
<
ColumnDefinition
/>
</
Grid.ColumnDefinitions
>
<
TextBlock
Grid.Column
=
"1"
Text
=
"{Binding AssemblyName}"
TextWrapping
=
"Wrap"
FontFamily
=
"Segoe UI"
FontSize
=
"14"
HorizontalAlignment
=
"Left"
VerticalAlignment
=
"Center"
Foreground
=
"{StaticResource MainBrush}"
Margin
=
"20,0,0,0"
/>
</
Grid
>
<
Grid
x:Name
=
"selectedGrid"
Height
=
"0"
Margin
=
"1,0,0,0"
Background
=
"#FF434343"
>
<
Grid.ColumnDefinitions
>
<
ColumnDefinition
Width
=
"Auto"
/>
<
ColumnDefinition
/>
</
Grid.ColumnDefinitions
>
<
StackPanel
Grid.Column
=
"1"
Margin
=
"16"
HorizontalAlignment
=
"Left"
>
<
TextBlock
TextWrapping
=
"Wrap"
Text
=
"{Binding Name}"
FontFamily
=
"Segoe UI Light"
FontSize
=
"24"
Foreground
=
"{DynamicResource AccentBrush}"
HorizontalAlignment
=
"Left"
/>
<
TextBlock
Text
=
"{Binding Phone}"
FontFamily
=
"Segoe UI"
FontSize
=
"16"
Foreground
=
"{StaticResource MainBrush}"
HorizontalAlignment
=
"Left"
Margin
=
"0,2,0,0"
/>
<
TextBlock
Text
=
"{Binding Zip}"
FontFamily
=
"Segoe UI"
FontSize
=
"12"
Foreground
=
"{StaticResource BasicBrush}"
HorizontalAlignment
=
"Left"
Margin
=
"0,2,0,0"
/>
</
StackPanel
>
</
Grid
>
</
Grid
>
</
Border
>
</
Grid
>
</
ControlTemplate
>
<
Style
TargetType
=
"telerik:RadListBoxItem"
>
<
Setter
Property
=
"Template"
Value
=
"{StaticResource ListBoxItemTemplate}"
/>
<
Setter
Property
=
"HorizontalContentAlignment"
Value
=
"Stretch"
/>
<
Setter
Property
=
"VerticalContentAlignment"
Value
=
"Top"
/>
<
Setter
Property
=
"Background"
Value
=
"#FF434343"
/>
<
Setter
Property
=
"BorderBrush"
Value
=
"{StaticResource StrongBrush}"
/>
<
Setter
Property
=
"BorderThickness"
Value
=
"8,0,1,1"
/>
<
Setter
Property
=
"Foreground"
Value
=
"{StaticResource MarkerBrush}"
/>
<!--Setter Property="TabNavigation" Value="Local" />-->
</
Style
>
<!-- LIST BOX STYLE -->
<
Style
TargetType
=
"telerik:RadListBox"
>
<
Setter
Property
=
"BorderThickness"
Value
=
"0"
/>
<
Setter
Property
=
"BorderBrush"
Value
=
"Transparent"
/>
<
Setter
Property
=
"Background"
Value
=
"Transparent"
/>
<
Setter
Property
=
"HorizontalContentAlignment"
Value
=
"Left"
/>
<
Setter
Property
=
"VerticalContentAlignment"
Value
=
"Top"
/>
<
Setter
Property
=
"IsTabStop"
Value
=
"False"
/>
<!--Setter Property="TabNavigation" Value="Once" />-->
</
Style
>
</
ResourceDictionary
>
Brush:
<
ResourceDictionary
xmlns:telerik
=
"http://schemas.telerik.com/2008/xaml/presentation"
xmlns:d
=
"http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc
=
"http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable
=
"d"
>
<
telerik:Windows8Theme
x:Key
=
"Theme"
/>
<!--MAIN UI BRUSHES-->
<
SolidColorBrush
x:Key
=
"AccentBrush"
telerik:Windows8Colors.Color
=
"Accent"
/>
<
SolidColorBrush
x:Key
=
"BasicBrush"
telerik:Windows8Colors.Color
=
"Basic"
/>
<
SolidColorBrush
x:Key
=
"StrongBrush"
telerik:Windows8Colors.Color
=
"Strong"
/>
<
SolidColorBrush
x:Key
=
"MainBrush"
telerik:Windows8Colors.Color
=
"Main"
/>
<
SolidColorBrush
x:Key
=
"MarkerBrush"
telerik:Windows8Colors.Color
=
"Marker"
/>
<
SolidColorBrush
x:Key
=
"ValidationBrush"
telerik:Windows8Colors.Color
=
"Validation"
/>
<!--CATHEGORY BRUSHES-->
<
SolidColorBrush
x:Key
=
"MailBrush"
Color
=
"#FF25A0DA"
/>
<
SolidColorBrush
x:Key
=
"CallBrush"
Color
=
"#FFED1691"
/>
<
SolidColorBrush
x:Key
=
"MeetBrush"
Color
=
"#FFDAA125"
/>
<!--STATUS / PRIORITY BRUSHES-->
<
SolidColorBrush
x:Key
=
"RedBrush"
Color
=
"#FFE61E26"
/>
<
SolidColorBrush
x:Key
=
"YellowBrush"
Color
=
"#FFDAA125"
/>
<
SolidColorBrush
x:Key
=
"GreenBrush"
Color
=
"#FF679700"
/>
</
ResourceDictionary
>
Main XAML:
<
Window
xmlns:telerik
=
"http://schemas.telerik.com/2008/xaml/presentation"
x:Class
=
"RadListBoxTest.MainWindow"
Title
=
"MainWindow"
Height
=
"500"
Width
=
"800"
>
<
Window.Resources
>
<
ResourceDictionary
>
<
ResourceDictionary.MergedDictionaries
>
<
ResourceDictionary
Source
=
"Brushes.xaml"
/>
<
ResourceDictionary
Source
=
"RadListBoxStyle.xaml"
/>
</
ResourceDictionary.MergedDictionaries
>
</
ResourceDictionary
>
</
Window.Resources
>
<
Grid
>
<
telerik:RadListBox
x:Name
=
"RadListBox"
ItemsSource
=
"{Binding Assemblies}"
SelectedIndex
=
"0"
SelectionMode
=
"Extended"
AllowDrop
=
"True"
Margin
=
"0,0,0,69"
/>
<
Button
Content
=
"Add Items"
HorizontalAlignment
=
"Center"
VerticalAlignment
=
"Bottom"
Width
=
"150"
Height
=
"30"
Margin
=
"246,0,396,0"
Click
=
"Button_Click_2"
/>
<
Button
Content
=
"Remove Selected Items"
HorizontalAlignment
=
"Center"
VerticalAlignment
=
"Bottom"
Width
=
"150"
Height
=
"30"
Click
=
"Button_Click_1"
Margin
=
"463,0,179,0"
/>
</
Grid
>
</
Window
>
public
partial
class
MainWindow : Window
{
public
MainWindow()
{
InitializeComponent();
RadListBox.ItemsSource = Agencies;
}
private
ObservableCollection<Agency> agencies;
public
ObservableCollection<Agency> Agencies
{
get
{
if
(agencies ==
null
)
{
agencies =
new
ObservableCollection<Agency>();
}
return
agencies;
}
}
private
void
Button_Click_1(
object
sender, RoutedEventArgs e)
{
if
(RadListBox.SelectedItems !=
null
&& RadListBox.SelectedItems.Count > 0)
{
var items = RadListBox.SelectedItems.OfType<Agency>().ToArray();
int
selIdx = RadListBox.SelectedIndex;
foreach
(Agency i
in
items)
Agencies.Remove(i);
if
(items.Length == 1)
{
if
(selIdx < Agencies.Count)
RadListBox.SelectedIndex = selIdx;
else
RadListBox.SelectedIndex = Agencies.Count - 1;
}
else
RadListBox.SelectedIndex = Agencies.Count - 1;
}
}
private
void
Button_Click_2(
object
sender, RoutedEventArgs e)
{
agencies.Add(
new
Agency(
"Exotic Liquids"
,
"(171) 555-2222"
,
"EC1 4SD"
));
agencies.Add(
new
Agency(
"New Orleans Cajun Delights"
,
"(100) 555-4822"
,
"70117"
));
agencies.Add(
new
Agency(
"Grandma Kelly's Homestead"
,
"(313) 555-5735"
,
"48104"
));
agencies.Add(
new
Agency(
"Tokyo Traders"
,
"(03) 3555-5011"
,
"100"
));
agencies.Add(
new
Agency(
"Cooperativa de Quesos 'Las Cabras'"
,
"(98) 598 76 54"
,
"33007"
));
agencies.Add(
new
Agency(
"Mayumi's"
,
"(06) 431-7877"
,
"545"
));
agencies.Add(
new
Agency(
"Pavlova, Ltd."
,
"(03) 444-2343"
,
"3058"
));
agencies.Add(
new
Agency(
"Specialty Biscuits, Ltd."
,
"(161) 555-4448"
,
"M14 GSD"
));
agencies.Add(
new
Agency(
"PB Knäckebröd AB"
,
"031-987 65 43"
,
"S-345 67"
));
agencies.Add(
new
Agency(
"Refrescos Americanas LTDA"
,
"(11) 555 4640"
,
"5442"
));
}
}