[WPF] 왼쪽에서 슬라이드 인하는 메뉴바

4117 단어 C#.NETWPF

이런 느낌



왼쪽에서 바가 슬라이드 인 표시합니다.



소스는 여기

메커니즘



WPF의 Window.Width 값을 늘리면 Window는 오른쪽으로 뻗어 있습니다.
바를 MainWindow와는 다른 Window로 해, Width 를 기세 좋게 늘려 가면, 실용성은 어쨌든, 이것은 이미 슬라이드 인이라고 해도 좋은 것은 아닐까.

MenuWindow.xaml.cs
        // メインウィンドウ側から呼んでもらう、メニューバー表示用のメソッド
        public async void ShowSlideWindow(double left, double top, double ownerWidth)
        {
            this.Top = top;
            this.Left = left;
            this.Show();

            // スライドイン表示
            for (int i = 1; i < 15; i++)
            {
                var newValue = this.Width + 30 * (i - 0.7);
                if (newValue <= ownerWidth)
                {
                    this.Width = newValue;
                }
                else 
                {
                    break;
                }
                await Task.Delay(1);
            }
            this.Width = ownerWidth;
        }


본제와는 별로 관계 없습니다만, 메뉴 바 이외의 부분을 클릭했을 때에, 바가 사라져 주는 움직임을 좋아하므로, Window의 Deactivated 이벤트로 Close() 하고 있습니다.

MenuWindow.xaml.cs
        private void Window_Deactivated(object sender, EventArgs e)
        {
            this.Close();
        }

좋은 웹페이지 즐겨찾기