예제 #1
0
        /// <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;
        }
예제 #2
0
 //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;
             }));
         }
     }
 }