Я новичок в WPF ... :)Сгруппированная ListBox и SelectionChanged
мне нужна ListBox для отображения сгруппированных элементов, что хорошо работает.
<ListBox Width="120" Loaded="ListBox_Loaded" SelectionChanged="ListBox_SelectionChanged" >
<ListBox.GroupStyle>
<GroupStyle />
</ListBox.GroupStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<ListBox ItemsSource="{Binding Items}" BorderThickness="0" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Но в * ListBox_SelectionChanged * SelectedIndex еще -1, а также SelectedItems коллекция пуста.
Вот кусок кода позади:
public ICollectionView Groups()
{
List<Groups> groups = new List<AC.Groups>();
groups.Add(new AC.Groups { Items = Properties.Settings.Default.Worker, Name="Worker" });
groups.Add(new AC.Groups { Items = Properties.Settings.Default.Flow, Name = "Flow" });
ICollectionView groups = CollectionViewSource.GetDefaultView(groups);
groups.GroupDescriptions.Add(new PropertyGroupDescription("Name"));
return groups;
}
private void ListBox_Loaded(object sender, RoutedEventArgs e)
{
(sender as ListBox).ItemsSource = Groups();
}
private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
MessageBox.Show((sender as ListBox).SelectedIndex.ToString());
}
class Groups
{
public System.Collections.Specialized.StringCollection Items { get; set; }
public string Name { get; set; }
public override string ToString()
{
return Name;
}
}
Спасибо за помощь!
Что вы делаете, чтобы вызвать 'SelectionChanged' событие? Вы вручную выбираете элемент с помощью мыши или клавиатуры? Или вы что-то программируете? –
Также есть причина, по которой у вас есть 'ListBox' для каждого элемента (в' ItemTemplate')? Считаете ли вы использование свойства ListBox.GroupStyle? См. Это обсуждение: http://karlshifflett.wordpress.com/2009/06/10/wpf-sample-series-listbox-grouping-sorting-subtotals-and-collapsible-regions/ –