/// <summary> /// Méthode pour mettre en gras le nom de la session actuellement active dans la dataGrid lors d'un changement de session /// Si aucune session n'était auparavent en gras, mettre previousIndex et newIndex de la même session /// </summary> /// <param name="previousIndex">Position dans l'index de la collection servant d'ItemsSource de la dataGrid réprésentant l'ancienne session actuellement en gras</param> /// <param name="newIndex">Position dans l'index de la collection servant d'ItemsSource de la dataGrid réprésentant la session qui sera maintenant en gras</param> private void SwitchActive(int previousIndex, int newIndex) { //La joie de faire un style en code-behind. Plusieurs objets doivent êtres créés en plusieurs étapes. //Définie les Setters qui appliquent un FontWeights sur la propriété FontWeightProperty d'un TextBlock //Ici un FontWeight Bold et Normal. Setter normal = new Setter(TextBlock.FontWeightProperty, FontWeights.Normal, null); Setter bold = new Setter(TextBlock.FontWeightProperty, FontWeights.Bold, null); //Récupère la row de la DataGrid à l'index previousIndex. DataGridRow row = (DataGridRow)dgSessions.ItemContainerGenerator.ContainerFromIndex(previousIndex); //Crée un nouveau Style avec comme targetType DataGridRow. Style newStyle = new Style(row.GetType()); // Rajoute le setter normal au style. newStyle.Setters.Add(normal); //Redéfinie le style de la row. En gros, le FontWeight et devenu Normal pour la row. row.Style = newStyle; // Mêmes opérations, mais pour la row à l'index newIndex et met le setter du style à bold. row = (DataGridRow)dgSessions.ItemContainerGenerator.ContainerFromIndex(newIndex); newStyle = new Style(row.GetType()); newStyle.Setters.Add(bold); //Le FontWeight est maintenant en Bold pour la row. row.Style = newStyle; }
//a method to take off bold on currently playing file (before stopping) private void RowBold(bool on = false) { if (curplay != null) { List <AAPList> templist = new List <AAPList>(AAPLists.OrderBy(o => o.order)); DataGridRow row2 = (DataGridRow)playlistgrid.ItemContainerGenerator.ContainerFromIndex(templist.IndexOf(curplay)); if (row2 != null) { System.Windows.Application.Current.Dispatcher.BeginInvoke(new Action(() => { Style newStyle = new Style(row2.GetType()); if (on) { newStyle.Setters.Add(bold); } else { newStyle.Setters.Add(normal); } row2.Style = newStyle; })); } } }