public void UpdateTrayFolders() { // SYNC COLLECTION >> FOLDERS StackPanel rows = MainWindow._instance._folderStackPanel as StackPanel; int count = 0; for (int i = 0; i < rows.Children.Count; i++) { StackPanel folders = rows.Children[i] as StackPanel; for (int j = 0; j < folders.Children.Count; j++) { count++; } } // update only if we counted a diferent amount of folders (aka something was added or removed) if (count != foldersListitem.Items.Count) { foldersListitem.Items.Clear(); for (int i = 0; i < rows.Children.Count; i++) { StackPanel folders = rows.Children[i] as StackPanel; for (int j = 0; j < folders.Children.Count; j++) { FolderTile ft = folders.Children[j] as FolderTile; MenuItem subItem = new MenuItem(); subItem.Header = ft.MyConfig.ChannelName.Split(" > ")[^ 1];
private void UpdateFolderGrid(bool forceUpdate = false) { int itemsPerRow = (int)((float)_folderStackPanel.ActualWidth / 104); if (_old == itemsPerRow && !forceUpdate) { return; // dont update if its not needed, duh. } Tiles.Clear(); _folderStackPanel.Children.Clear(); StackPanel row = NewFolderRow(); int itemsCount = chConfig.list.Count; int index = 0; foreach (var ch in chConfig.list) { FolderTile ft = new FolderTile(ch.Value); row.Children.Add(ft); Tiles.Add(ch.Value.ChannelId, ft); int col = index % itemsPerRow; if (col == (itemsPerRow - 1)) { _folderStackPanel.Children.Add(row); row = NewFolderRow(); } if (index == (itemsCount - 1)) { _folderStackPanel.Children.Add(row); } index++; } _old = itemsPerRow; }