Функциональность Toggle Раздвижная панель WPF - PullRequest
0 голосов
/ 01 апреля 2020

Я занимаюсь разработкой приложения WPF и разработал скользящую панель навигации. В настоящее время он настроен на две разные кнопки; один, чтобы открыть панель навигации и один, чтобы закрыть. Однако я пытаюсь реализовать переключатель, чтобы при нажатии одной кнопки открывалась панель навигации, а затем при повторном нажатии - панель навигации закрывалась.

У меня все это разработано отдельно от функции переключения, в которой у меня есть кнопка, функция для запуска открытия и закрытия, но не переключения. Пока у меня есть следующий код. Как прокомментировано, первая часть открывает панель навигации, а вторая закрывает ее.

WPF XAML

<Button x:Name="ToggleNavBtn" Click="ToggleNavBtn_Click" ToolTip="Toggle navigation" Height="50" Width="20" Content="|||" Background="#C20114" Foreground="#fff" ></Button>

C# Код

//Either 1 (Open) or 0 (Closed)
            int state = 0;

            if (state == 0)
            {
                //Open navigation
                Storyboard sbOpen = Resources["OpenNavMenu"] as Storyboard;
                sbOpen.Begin(NavMenu);

                state = 1;
            }
            else if (state == 1)
            {
                // Closes navigation
                Storyboard sb = Resources["CloseNavMenu"] as Storyboard;
                sb.Begin(NavMenu);

                state = 0;
            }

Я планировал использовать переменную и изменяйте это после выполнения каждой части кода, но, очевидно, переменная state является локальной в операторе if, так что, хотя она представляет желаемую функциональность, приводит к открытию только когда-либо навигационной панели.

Мой вопрос: как Я хотел бы убедиться, что, когда панель навигации закрывается, что при нажатии кнопки панель навигации открывается, а затем снова нажимается одна - закрывается, повторяя непрерывно, независимо от того, сколько я нажимаю на кнопку.

Надеюсь, это имеет смысл, заранее спасибо.

1 Ответ

0 голосов
/ 02 апреля 2020

После некоторого исследования переключателей в WPF я обнаружил, что вы можете использовать ToggleButton вместо Button следующим образом:

XAML

<ToggleButton Checked="ToggleNavBtn_Checked" Unchecked="ToggleNavBtn_Unchecked" x:Name="ToggleNavBtn" ToolTip="Toggle navigation" Height="50" Width="20" Content="|||" Background="#C20114" Foreground="#fff" ></ToggleButton>

C# Код

private void ToggleNavBtn_Checked(object sender, RoutedEventArgs e)
        {
            //Open navigation
            Storyboard sbOpen = Resources["OpenNavMenu"] as Storyboard;
            sbOpen.Begin(NavMenu);
        }

        private void ToggleNavBtn_Unchecked(object sender, RoutedEventArgs e)
        {
            // Closes navigation
            Storyboard sb = Resources["CloseNavMenu"] as Storyboard;
            sb.Begin(NavMenu);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...