2013-06-24 3 views
0

Я новичок в 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; 
     } 
    } 

Спасибо за помощь!

+1

Что вы делаете, чтобы вызвать 'SelectionChanged' событие? Вы вручную выбираете элемент с помощью мыши или клавиатуры? Или вы что-то программируете? –

+1

Также есть причина, по которой у вас есть 'ListBox' для каждого элемента (в' ItemTemplate')? Считаете ли вы использование свойства ListBox.GroupStyle? См. Это обсуждение: http://karlshifflett.wordpress.com/2009/06/10/wpf-sample-series-listbox-grouping-sorting-subtotals-and-collapsible-regions/ –

ответ

1
<DataTemplate> 
    <ListBox ItemsSource="{Binding Items}" BorderThickness="1" SelectionChanged="ListBox_SelectionChanged" /> 
</DataTemplate> 

Misplaced обработчик события ... :)

+0

Отлично! Часто проблемы проще, чем мы можем себе представить :) Отметьте свое собственное сообщение в качестве ответа, если оно решит проблему успешно. – Fedor

+1

Да, теперь он работает как ожидалось. Спасибо за помощь мне :) –