private static void FillScopeItems(KeyValuePair<string, DatabaseInfo> database, DatabaseTreeViewItem parentItem, IList<string> scopeList) { parentItem.Items.Clear(); foreach (var scope in scopeList) { var item = TreeViewHelper.CreateTreeViewItemWithImage(scope, "../Resources/Synchronize_16xLG.png", true); item.ContextMenu = new ScopesContextMenu(new MenuCommandParameters {DatabaseInfo = database.Value, Name = scope, MenuItemType = MenuType.Manage}, _parentWindow); parentItem.Items.Add(item); var tables = SyncFxHelper.GetSqlCeScopeDefinition(database.Value.ConnectionString, scope).Select(s => s.TableName).Distinct(); item.Expanded += (s, e) => GetScopeTables(s, e, tables, database); } }
private static void GetScopeTables(object sender, RoutedEventArgs args, IEnumerable<string> tables, KeyValuePair<string, DatabaseInfo> database) { var viewItem = sender as DatabaseTreeViewItem; // Prevent loading again and again if (viewItem != null && (viewItem.Items.Count > 0 && viewItem.Items[0].ToString() == "Loading...")) { viewItem.Items.Clear(); var scopeName = viewItem.MetaData; foreach (var table in tables) { var item = TreeViewHelper.CreateTreeViewItemWithImage(table, "../Resources/table_16xLG.png", true); item.ToolTip = table; viewItem.Items.Add(item); var columns = SyncFxHelper.GetSqlCeScopeDefinition(database.Value.ConnectionString, scopeName); item.Expanded += (s, e) => GetScopeTableColumns(s, e, columns); } } args.Handled = true; }