본문 바로가기

WPF

UserControl 과 Dependency 확장

반응형

wfp 개발을 하다보면, UserControl 을 수정해야할지... 

Style 적용으로 Trigger 설정을 해야할지 막막할때가 참 많다.


어느쪽이 정답이라고 말할수는 없으나

현재 프로젝트의 성능을 고려했을때 가장 적합한 방법으로 사용하는것이 좋을듯하다.

이번에는 DependencyProperty 를 사용한 경우의 예를 간단하게 들어볼까한다.


예를들어, UserControl (Label / TextBox / DataGrid)를 가지고 있는 컨트롤이 하나 있다고 하자.


DependencyProperty 를 추가해서 사용하는 경우는 아래와같은 처리를 해야한다.



        public static readonly DependencyProperty DataGridSelectionModeProperty = DependencyProperty.Register

        (

                    "DataGridSelectionMode",

                    typeof(DataGridSelectionMode),

                    typeof(UserControlDataGridBase),

                    new FrameworkPropertyMetadata(DataGridSelectionMode.Extended, new PropertyChangedCallback(UserControlDataGridBase.OnDataGridSelectionModeChanged))

        );


        public DataGridSelectionMode DataGridSelectionMode

        {

            get { return (DataGridSelectionMode)GetValue(DataGridSelectionModeProperty); }

            set

            {

                SetValue(DataGridSelectionModeProperty, value);

            }

        }


        private static void OnDataGridSelectionModeChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)

        {

            (d as UserControlDataGridBase).DataGridSelectionMode = (DataGridSelectionMode)e.NewValue;

        }


여기서 외부공개용인 DataGridSelectionMode 를 View에서 설정하게 된다.


위의예는 DataGridSelectionMode 를 설정하는 DependencyProperty  이므로 상황에맞게 설정하면 되겠다.


반응형