private static void OnDisplayRowNumberChanged(DependencyObject target, DependencyPropertyChangedEventArgs e) { DataGrid dataGrid = target as DataGrid; if ((bool)e.NewValue == true) { int offset = GetDisplayRowNumberOffset(target); EventHandler <DataGridRowEventArgs> loadedRowHandler = null; loadedRowHandler = (object sender, DataGridRowEventArgs ea) => { if (GetDisplayRowNumber(dataGrid) == false) { dataGrid.LoadingRow -= loadedRowHandler; return; } ea.Row.Header = ea.Row.GetIndex() + offset; }; dataGrid.LoadingRow += loadedRowHandler; ItemsChangedEventHandler itemsChangedHandler = null; itemsChangedHandler = (object sender, ItemsChangedEventArgs ea) => { if (GetDisplayRowNumber(dataGrid) == false) { dataGrid.ItemContainerGenerator.ItemsChanged -= itemsChangedHandler; return; } GetVisualChildCollection <DataGridRow>(dataGrid). ForEach(d => d.Header = d.GetIndex() + offset); }; dataGrid.ItemContainerGenerator.ItemsChanged += itemsChangedHandler; } }
private static void OnDisplayRowNumberChanged(DependencyObject target, DependencyPropertyChangedEventArgs e) { var dataGrid = target as DataGrid; if ((bool)e.NewValue == true) { EventHandler <DataGridRowEventArgs> loadedRowHandler = null; loadedRowHandler = (object sender, DataGridRowEventArgs ea) => { if (GetDisplayRowNumber(dataGrid) == false) { dataGrid.LoadingRow -= loadedRowHandler; return; } ea.Row.Header = ea.Row.DataContext == CollectionView.NewItemPlaceholder ? "*" : (ea.Row.GetIndex() + 1).ToString(); }; dataGrid.LoadingRow += loadedRowHandler; ItemsChangedEventHandler itemsChangedHandler = null; itemsChangedHandler = (object sender, ItemsChangedEventArgs ea) => { if (GetDisplayRowNumber(dataGrid) == false) { dataGrid.ItemContainerGenerator.ItemsChanged -= itemsChangedHandler; return; } GetVisualChildCollection <DataGridRow>(dataGrid).ForEach(d => d.Header = d.GetIndex()); }; dataGrid.ItemContainerGenerator.ItemsChanged += itemsChangedHandler; } }
static EmptyPlaceHolderService() { onItemsChanged = (s, e) => { var key = ( ItemContainerGenerator )s; ItemsControl control; if (managedItemsControls.TryGetValue(key, out control)) { if (control.Items.Any()) { RemoveEmptyContent(control); } else { ShowEmptyContent(control); } } }; onUnloaded = (s, e) => { var control = ( ItemsControl )s; var key = control.ItemContainerGenerator; if (managedItemsControls.ContainsKey(key)) { managedItemsControls.Remove(key); } //Vedi il CueBanner service per la spiegazione. //control.Loaded -= onLoaded; control.Unloaded -= onUnloaded; key.ItemsChanged -= onItemsChanged; }; onLoaded = (s, e) => { var control = ( ItemsControl )s; var key = control.ItemContainerGenerator; if (!managedItemsControls.ContainsKey(key)) { managedItemsControls.Add(key, control); key.ItemsChanged += onItemsChanged; control.Unloaded += onUnloaded; } if (control.Items.None()) { ShowEmptyContent(control); } else { RemoveEmptyContent(control); } }; }
/// <summary> /// Extends BeginInvoke so that when a state object is not needed, null does not need to be passed. /// <example> /// itemschangedeventhandler.BeginInvoke(sender, e, callback); /// </example> /// </summary> public static IAsyncResult BeginInvoke(this ItemsChangedEventHandler itemschangedeventhandler, Object sender, ItemsChangedEventArgs e, AsyncCallback callback) { if (itemschangedeventhandler == null) { throw new ArgumentNullException("itemschangedeventhandler"); } return(itemschangedeventhandler.BeginInvoke(sender, e, callback, null)); }
static EmptyPlaceHolderService() { onItemsChanged = ( s, e ) => { var key = ( ItemContainerGenerator )s; ItemsControl control; if( managedItemsControls.TryGetValue( key, out control ) ) { if( control.Items.Any() ) { RemoveEmptyContent( control ); } else { ShowEmptyContent( control ); } } }; onUnloaded = ( s, e ) => { var control = ( ItemsControl )s; var key = control.ItemContainerGenerator; if( managedItemsControls.ContainsKey( key ) ) { managedItemsControls.Remove( key ); } //Vedi il CueBanner service per la spiegazione. //control.Loaded -= onLoaded; control.Unloaded -= onUnloaded; key.ItemsChanged -= onItemsChanged; }; onLoaded = ( s, e ) => { var control = ( ItemsControl )s; var key = control.ItemContainerGenerator; if( !managedItemsControls.ContainsKey( key ) ) { managedItemsControls.Add( key, control ); key.ItemsChanged += onItemsChanged; control.Unloaded += onUnloaded; } if( control.Items.None() ) { ShowEmptyContent( control ); } else { RemoveEmptyContent( control ); } }; }
private static void OnDisplayRowNumberChanged(DependencyObject target, DependencyPropertyChangedEventArgs e) { DataGrid dataGrid = target as DataGrid; if ((bool)e.NewValue == true) { EventHandler <DataGridRowEventArgs> loadedRowHandler = null; loadedRowHandler = (object sender, DataGridRowEventArgs ea) => { if (GetDisplayRowNumber(dataGrid) == false) { dataGrid.LoadingRow -= loadedRowHandler; return; } var veiw = dataGrid.ItemsSource as DataView; var row = ea.Row.DataContext as DataRowView; var index = veiw.Table.Rows.IndexOf(row.Row); //var t = veiw.Table.Rows.IndexOf(ea.Row.Item as DataRowView); ea.Row.Header = index;// ea.Row.GetIndex(); }; dataGrid.LoadingRow += loadedRowHandler; ItemsChangedEventHandler itemsChangedHandler = null; itemsChangedHandler = (object sender, ItemsChangedEventArgs ea) => { if (GetDisplayRowNumber(dataGrid) == false) { dataGrid.ItemContainerGenerator.ItemsChanged -= itemsChangedHandler; return; } GetVisualChildCollection <DataGridRow>(dataGrid). ForEach(d => { var veiw = dataGrid.ItemsSource as DataView; // var row = d.DataContext //var index = veiw.Table.Rows.IndexOf(row.Row); // dataGrid. //d.Header = d.GetIndex(); }); //var r = //var index = r.Table.Rows.IndexOf(r); }; dataGrid.ItemContainerGenerator.ItemsChanged += itemsChangedHandler; } }
private static void OnFixUpdateChanged(DependencyObject target, DependencyPropertyChangedEventArgs e) { MapItemsControl mapItemsControl = target as MapItemsControl; ItemsChangedEventHandler itemsChangedEventHandler = null; itemsChangedEventHandler = (object sender, ItemsChangedEventArgs ea) => { if (ea.Action == NotifyCollectionChangedAction.Add) { EventHandler statusChanged = null; statusChanged = new EventHandler(delegate { if (mapItemsControl.ItemContainerGenerator.Status == GeneratorStatus.ContainersGenerated) { mapItemsControl.ItemContainerGenerator.StatusChanged -= statusChanged; int index = ea.Position.Index + ea.Position.Offset; ContentPresenter contentPresenter = mapItemsControl.ItemContainerGenerator.ContainerFromIndex(index) as ContentPresenter; if (VisualTreeHelper.GetChildrenCount(contentPresenter) == 1) { MapLayer mapLayer = GetVisualParent <MapLayer>(mapItemsControl); mapLayer.ForceMeasure(); } else { EventHandler layoutUpdated = null; layoutUpdated = new EventHandler(delegate { if (VisualTreeHelper.GetChildrenCount(contentPresenter) == 1) { contentPresenter.LayoutUpdated -= layoutUpdated; MapLayer mapLayer = GetVisualParent <MapLayer>(mapItemsControl); mapLayer.ForceMeasure(); } }); contentPresenter.LayoutUpdated += layoutUpdated; } } }); mapItemsControl.ItemContainerGenerator.StatusChanged += statusChanged; } }; mapItemsControl.ItemContainerGenerator.ItemsChanged += itemsChangedEventHandler; }
private static void ItemsSourceChanged(object sender, EventArgs e) { var itemsControl = sender as ItemsControl; ItemsChangedEventHandler itemsChangedEventHandler = null; itemsChangedEventHandler = delegate { var scrollViewer = GetVisualChild <ScrollViewer>(itemsControl); scrollViewer.ScrollToTop(); if (itemsControl != null) { itemsControl.ItemContainerGenerator.ItemsChanged -= itemsChangedEventHandler; } }; if (itemsControl != null) { itemsControl.ItemContainerGenerator.ItemsChanged += itemsChangedEventHandler; } }
/// <summary> /// DisplayRowNumber 添付プロパティ変更イベントハンドラ /// </summary> /// <param name="sender">イベント発行元</param> /// <param name="e">イベント引数</param> private static void OnDisplayRowNumberChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e) { var dataGrid = sender as DataGrid; if (dataGrid == null) { return; } if (e.NewValue != null) { var displayNumber = GetDisplayRowNumber(dataGrid); EventHandler <DataGridRowEventArgs> loadedRowHandler = null; loadedRowHandler = (object _, DataGridRowEventArgs ea) => { if (displayNumber == null) { dataGrid.LoadingRow -= loadedRowHandler; return; } ea.Row.Header = ea.Row.GetIndex() + displayNumber; }; dataGrid.LoadingRow += loadedRowHandler; ItemsChangedEventHandler itemsChangedHandler = null; itemsChangedHandler = (object _, ItemsChangedEventArgs ea) => { if (displayNumber == null) { dataGrid.ItemContainerGenerator.ItemsChanged -= itemsChangedHandler; return; } // 子要素の DataGridRow クラスに対してのみヘッダ情報を書き換える GetVisualChildCollection <DataGridRow>(dataGrid). ForEach(d => d.Header = d.GetIndex() + displayNumber); }; dataGrid.ItemContainerGenerator.ItemsChanged += itemsChangedHandler; } }
private static void OnDisplayRowNumberChanged(DependencyObject target, DependencyPropertyChangedEventArgs e) { var dataGrid = target as DataGrid; if ((bool)e.NewValue) { EventHandler <DataGridRowEventArgs> loadedRowHandler = null; loadedRowHandler = (object sender, DataGridRowEventArgs ea) => { if (GetDisplayRowNumber(dataGrid) == false) { dataGrid.LoadingRow -= loadedRowHandler; return; } ea.Row.Header = new TextBlock { Text = ea.Row.GetIndex().ToString(), Margin = new Thickness(5) }; }; dataGrid.LoadingRow += loadedRowHandler; ItemsChangedEventHandler itemsChangedHandler = null; itemsChangedHandler = (object sender, ItemsChangedEventArgs ea) => { if (GetDisplayRowNumber(dataGrid) == false) { dataGrid.ItemContainerGenerator.ItemsChanged -= itemsChangedHandler; return; } GetVisualChildCollection <DataGridRow>(dataGrid). ForEach( d => d.Header = new TextBlock { Text = d.GetIndex().ToString(), Margin = new Thickness(5) }); }; dataGrid.ItemContainerGenerator.ItemsChanged += itemsChangedHandler; } }
private static void OnDisplayRowNumberChanged(DependencyObject target, DependencyPropertyChangedEventArgs e) { DataGrid dataGrid = target as DataGrid; if ((bool)e.NewValue == true) { ItemsChangedEventHandler itemsChangedHandler = null; itemsChangedHandler = (object sender, ItemsChangedEventArgs ea) => { if (GetStaticLpColumn(dataGrid) == false) { dataGrid.ItemContainerGenerator.ItemsChanged -= itemsChangedHandler; return; } int a = 1; foreach (var item in dataGrid.Items) { dynamic it = item; it.Lp = a++; } }; dataGrid.ItemContainerGenerator.ItemsChanged += itemsChangedHandler; } }
private static void OnDisplayRowNumberChanged(DependencyObject target, DependencyPropertyChangedEventArgs e) { DataGrid dataGrid = target as DataGrid; if ((bool)e.NewValue == true) { EventHandler <DataGridRowEventArgs> loadedRowHandler = null; loadedRowHandler = (object sender, DataGridRowEventArgs ea) => { if (GetDisplayRowNumber(dataGrid) == false) { dataGrid.LoadingRow -= loadedRowHandler; return; } // ヘッダの始まりを1にする ea.Row.Header = ea.Row.GetIndex() + 1; //ea.Row.Header = ea.Row.GetIndex(); }; dataGrid.LoadingRow += loadedRowHandler; ItemsChangedEventHandler itemsChangedHandler = null; itemsChangedHandler = (object sender, ItemsChangedEventArgs ea) => { if (GetDisplayRowNumber(dataGrid) == false) { dataGrid.ItemContainerGenerator.ItemsChanged -= itemsChangedHandler; return; } // 行の追加/削除で表示がずれないよう、ここでも1始まりにする GetVisualChildCollection <DataGridRow>(dataGrid). ForEach(d => d.Header = d.GetIndex() + 1); //ForEach(d => d.Header = d.GetIndex()); }; dataGrid.ItemContainerGenerator.ItemsChanged += itemsChangedHandler; } }
public static Task RemoveTablesChangedAsync(this ITableCollection tableCollection, ItemsChangedEventHandler <ITable> handler) { return(tableCollection.Dispatcher.InvokeAsync(() => tableCollection.TablesChanged -= handler)); }
public static Task AddTypesChangedAsync(this ITypeCollection typeCollection, ItemsChangedEventHandler <IType> handler) { return(typeCollection.Dispatcher.InvokeAsync(() => typeCollection.TypesChanged += handler)); }