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);
                }
            };
        }
Example #4
0
        /// <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 );
				}
			};
		}
Example #6
0
        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;
    }
Example #8
0
        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;
            }
        }
Example #9
0
        /// <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;
            }
        }
Example #10
0
        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));
 }