void Initialize(IGridViewColumnDescsProvider descsProvider) { if (descsProvider is null) { return; } Debug2.Assert(this.descsProvider is null); this.descsProvider = descsProvider; descsProvider.Descs.SortedColumnChanged += OnSortedColumnChanged; listView.AddHandler(ButtonBase.ClickEvent, new RoutedEventHandler(ListView_Click)); var gridView = (GridView)listView.View; gridView.Columns.CollectionChanged += GridView_Columns_CollectionChanged; var cols = gridView.Columns; var idToDesc = new Dictionary <int, GridViewColumnDesc>(); foreach (var desc in descsProvider.Descs.Columns) { idToDesc.Add(desc.Id, desc); } foreach (var col in cols) { int colId = GetId(col); if (!idToDesc.TryGetValue(colId, out var desc)) { throw new InvalidOperationException("Missing GridViewColumn Id"); } toDesc.Add(col, desc); col.Header = desc.Name; } UpdateColumns(); }
public static void SetColumnProvider(FrameworkElement element, IGridViewColumnDescsProvider value) => element.SetValue(ColumnProviderProperty, value);