프로젝트

일반

사용자정보

통계
| 브랜치(Branch): | 개정판:

markus / KCOM / Behaviors / WindowStateBehavior.cs @ 24c5e56c

이력 | 보기 | 이력해설 | 다운로드 (1.74 KB)

1
using System;
2
using System.Collections.Generic;
3
using System.Linq;
4
using System.Text;
5
using System.Threading.Tasks;
6
using System.Windows;
7

    
8
namespace KCOM.Behaviors
9
{
10
    public class CustomWindowStateBehavior : System.Windows.Interactivity.Behavior<System.Windows.Window>
11
    {
12
        protected override void OnAttached()
13
        {
14
            AssociatedObject.StateChanged += AssociatedObject_StateChanged;
15
            base.OnAttached();
16
        }
17

    
18
        private void AssociatedObject_StateChanged(object sender, EventArgs e)
19
        {
20
            if(AssociatedObject.WindowState == WindowState.Maximized)
21
            {
22
                AssociatedObject.WindowState = WindowState.Normal;
23
                AssociatedObject.SetValue(CustomStateProperty, WindowState.Maximized);
24
            }
25
        }
26

    
27

    
28
        protected override void OnDetaching()
29
        {
30
            AssociatedObject.StateChanged += AssociatedObject_StateChanged;
31
            base.OnDetaching();
32
        }
33

    
34
        public static WindowState GetCustomState(DependencyObject obj)
35
        {
36
            return (WindowState)obj.GetValue(CustomStateProperty);
37
        }
38
        public static void SetCustomState(DependencyObject obj, WindowState value)
39
        {
40
            obj.SetValue(CustomStateProperty, value);
41
        }
42

    
43
        public static readonly DependencyProperty CustomStateProperty = DependencyProperty.RegisterAttached("CustomState", typeof(WindowState),
44
                                                                    typeof(Window), new FrameworkPropertyMetadata(WindowState.Normal, new PropertyChangedCallback(ApplicationCenterPropertyChanged)));
45

    
46
        private static void CustomStatePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
47
        {
48

    
49
        }
50

    
51
    }
52
}
클립보드 이미지 추가 (최대 크기: 500 MB)