WPF
[WPF Blend4/MouseDrag/MouseDragElementBehavior ] 창 가운데 띄우기 / 마우스드래그
스티커
2010. 11. 24. 14:52
창을 띄우면 새창이 안뜨고 창안에서 좀 간지나게 띄운다. 창안에 뜬 창은 드래그가 가능한다. 코딩한줄 안하고
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); } }