Beispiel #1
0
        public static IDisposable Track(this DataGrid dataGrid, DataGridSetting dataGridSetting)
        {
            EventHandler <DataGridColumnEventArgs> columnDisplayIndexChanged =
                (sender, args) => DataGridColumnDisplayIndexChanged(dataGridSetting, args);
            DataGridSortingEventHandler dataGridSortingChanged =
                (sender, args) => DataGridSorting(dataGridSetting, args);

            dataGrid.ColumnDisplayIndexChanged += columnDisplayIndexChanged;
            dataGrid.Sorting += dataGridSortingChanged;

            var notifiers = new List <PropertyChangeNotifier>();

            foreach (var column in dataGrid.Columns)
            {
                EventHandler ev       = (sender, x) => WidthChanged(column, dataGridSetting);
                var          notifier = new PropertyChangeNotifier(column, DataGridColumn.ActualWidthProperty);
                notifier.ValueChanged += ev;
                notifiers.Add(notifier);
            }

            return(Disposable.Create(() => {
                dataGrid.ColumnDisplayIndexChanged -= columnDisplayIndexChanged;
                dataGrid.Sorting -= dataGridSortingChanged;
                notifiers.DoForEach(
                    notifier => notifier.Dispose());
            }));
        }
Beispiel #2
0
        public DriverGrid()
        {
            InitializeComponent();
            Sorting += new DataGridSortingEventHandler(SortHandler);
            DataContextChanged += new DependencyPropertyChangedEventHandler(DataChanged);

            Listener.DriverHandlers.Add(this as DriverInfoUpdateHandler);
            Listener.SessionHandlers.Add(this as SessionInfoUpdateHandler);

            DriverList dl = new DriverList();
            this.DataContext = dl;

            l = new Listener();
            listenerThread = new Thread(l.listen);
            listenerThread.Name = "Listener";
            listenerThread.IsBackground = true;
            listenerThread.Start();
        }