창을 띄우면 새창이 안뜨고 창안에서 좀 간지나게 띄운다. 창안에 뜬 창은 드래그가 가능한다. 코딩한줄 안하고

Blend 에서 Rectangle 을 뒤에 깐다(뒤에 어두운 배경)

앞에 마우스 드래그가 가능하게 Canvas 안에 StackPanel 을 넣어뒀다

 

나는 StackPanel  안에 컨트롤을 바인딩해서 돌려 쓸려고 …..

 

암튼  움직이게 할 컨트롤을 선택한다.

(흰색박스)

도구에서

MouseDragElementBehavior를 선택해서 흰색창에 끌어다 놓는다.

비헤비어가 먹혔다. 이걸로 끗

좀만 손보면 이쁘다

 

헉! 배경창으로 밖으로 나간다.

이럴땐… ConstarinToParntBounds 체크를 해주면 회색배경 안에서만 논다.

 

 

 

팝업창을 가운데 띄우자

팝업창이 뜰때 암때나 뜨지말고 가운데 띄워서 더 이쁘게 ~

설명은 주석으로 끗

   /// <summary>
    /// PopupSelectUI.xaml에 대한 상호 작용 논리
    /// </summary>
    public partial class PopupSelectUI : UserControl
    {
        double h;
        double w;
        public PopupSelectUI()
        {
            InitializeComponent();
            Debug.WriteLine(this.IsLoaded);
            this.Loaded += new RoutedEventHandler(PopupSelectUI_Loaded);

        }

        void PopupSelectUI_Loaded(object sender, RoutedEventArgs e)
        {            
            SetCenter();
        }

        /// <summary>
        /// 움직이게 할 컨트롤을 바인딩합니다.
        /// </summary>
        /// <param name="fe"></param>
        public void SetUIContent(FrameworkElement fe) //컨버스 안에 붙는 컨트롤
        {
            h = fe.Height; //컨트롤 가로 세로 높이
            w = fe.Width;
            this.StpDrag.Children.Add(fe);
           
        }

        public void SetCenter()
        {
            this.UpdateLayout();
            double ContentGanvash = this.MainCanvas.ActualHeight; //MainCanvas 는 드래그창을 감싸는 캔버스
            double ContentGanvasw = this.MainCanvas.ActualWidth;

            double winl = (ContentGanvasw - w) / 2;
            double wint = (ContentGanvash - h) / 2;
          
            StpDrag.SetValue(Canvas.TopProperty, wint);
            StpDrag.SetValue(Canvas.LeftProperty, winl);           
        }

        private void StpDrag_MouseMove(object sender, MouseEventArgs e)
        {
            Debug.WriteLine(this.MainCanvas.ActualHeight);
        }

    }

+ Recent posts