Работа с CheckBox в WPF. Как с помощью CheckBox выключать музыку или метод, в котором она запускается?

В моём приложении по окончании таймера играет музыка. Картинка его в самом низу.

Они находятся(их две для каждого таймера отдельно) в методах:

private void MusicEndWork()
            {
                    Ew = new MediaPlayer();
                    Ew.Open(new Uri(@"C:\Users\grrek\source\repos\WpfApppp\WpfApppp\Res\EndWorkSound.wav", UriKind.Absolute));
                    Ew.Play();
            }

private void MusicEndBreak()
        {
                Eb = new MediaPlayer();
                Eb.Open(new Uri(@"C:\Users\grrek\source\repos\WpfApppp\WpfApppp\Res\EndBreakSound.wav", UriKind.Absolute));
                Eb.Play();
        }

Мой метод решения задачи был такой, я ставил условия в начле метода , если переменная A равна true, делаем код в методе, false, не делаем. По умолчанию я задавал переменной A = true, а уже в событиях(у меня их было четыре, для двух чек боксов на каждое состояние отмечено\не отмечено) менял её значение.

Но что-то не сработало.

Вот моё событие:

Это уже другой класс, поэтому в самом начале его я создаю экземпляр главного окна:

MainWindow main = new MainWindow();

        private void CheckBoxWork(object sender, RoutedEventArgs e)
        {
            main.proverkaMusicStart = false;
        }

        private void CheckBoxEnd(object sender, RoutedEventArgs e)
        {
            main.proverkaMusicEnd = false;
        }

        private void CheckBoxWorkUN(object sender, RoutedEventArgs e)
        {

            main.proverkaMusicStart = true;
        }

        private void CheckBoxEndUN(object sender, RoutedEventArgs e)
        {
            main.proverkaMusicEnd = true;
        }
  1. Вопрос, можно ли как-то проще реализовать мою задачу?

  2. Можно ли сделать disable метода?

  3. Почему мой вариант не работает?

введите сюда описание изображения


Ответы (1 шт):

Автор решения: aepot

1) Можно вот так, по обработчику на событие Checked для каждого чекбокса.

private void CheckBoxWork(object sender, RoutedEventArgs e)
{
    main.proverkaMusicStart = (sender as CheckBox)?.IsChecked ?? false;
}

В этом случае, если чекбокс отмечен, будет true если не отмечен или null (такое тоже бывает), будет false.

2) Что такое disable метода?

3) Вам не нужно создавать экземпляр главного окна (зачем вам 2 экземпляра окна?), его можно получить из приложения

MainWindow main = Application.Current.MainWindow as MainWindow;
→ Ссылка