Вообщем вот такая вот проблема. Есть форма которая биндиться к данным, а точнее ее ListView это делает следующим образом
| Код | <ListView Name="lw" Grid.Row="1" ItemsSource="{Binding Data}" View="{Binding ViewSettings.GridView, Mode=TwoWay}" diag:PresentationTraceSources.TraceLevel="High">
|
так вот Грид вью биндиться к классу ViewSettings. Который определен следующим образом
| Код | public class ViewSettings : INotifyPropertyChanged { ...... private GridView gridView; public GridView GridView { get { return gridView;} set { gridView = value; OnPropertyChanged("GridView"); } } ...... private void OnPropertyChanged(string propName) { MessageBox.Show("Чето изменилось"); if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(propName)); } ...... }
|
в GridView есть контекстное меню на Заголовке. В этом контекстом меню просто перечислены все столбцы находящиеся в GridView. Вот в этой функции создается это контекстное меню
| Код | public static ContextMenu GreateContextMenu(ArrayList columnInfoCollection) { var contextMenu = new ContextMenu(); foreach (ColumnInfo columnInfo in columnInfoCollection) { var menuItem = new MenuItem { Header = columnInfo.Header, IsCheckable = true, IsChecked = (!columnInfo.Hidden) }; contextMenu.Items.Add(menuItem); } return contextMenu; }
|
Как вы заметили у элементов есть свойство, которое определяет Стоит ли там галочка или нет. Я предпологал что когда я буду кликать на элементы контекстного меню то будет изменяться GridView и вызываться метод OnPropertyChanged, где я смогу обработать это изменение, но такого не происходит. Почему это происходит не пойму. Помогите плиз. Зараниее спасибо |