[Back]
SilverlightWindowControl.xaml:
<UserControl xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" x:Class="SilverlightDesktopTest.SilverlightWindowControl" d:DesignWidth="144.03" d:DesignHeight="174.604" HorizontalAlignment="Left"> <Canvas HorizontalAlignment="Left" Margin="0,0,134.52099609375,136" Width="144.03" VerticalAlignment="Top" d:LayoutOverrides="Width, Height" Height="174.604" x:Name="WindowControl"> <ScrollViewer x:Name="Window" Height="549.347" Width="537.97" Canvas.Left="3.03" Canvas.Top="23" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" > <Image x:Name="WindowImage" Height="Auto" Source="picture.jpg" Width="Auto" Stretch="UniformToFill"/> </ScrollViewer> <Rectangle MouseLeftButtonDown="LeftSide_MouseLeftButtonDown" Cursor="SizeWE" x:Name="LeftSide" Width="3.03" Fill="#FF556BA5" Stroke="#FF000000" StrokeThickness="0" Height="570.000007629395" Canvas.Top="2.325" d:LayoutOverrides="Width"/> <Rectangle MouseLeftButtonDown="RightSide_MouseLeftButtonDown" x:Name="RightSide" Width="3.03" Fill="#FF556797" Stroke="#FF000000" Cursor="SizeWE" StrokeThickness="0" Height="570.000007629395" Canvas.Left="541" Canvas.Top="2.326" d:LayoutOverrides="Width"/> <Rectangle MouseLeftButtonDown="BottomSide_MouseLeftButtonDown" Cursor="SizeNS" Height="2.977" x:Name="BottomSide" Fill="#FF6576A5" Stroke="#FF000000" StrokeThickness="0" Width="544.03" Canvas.Top="571.627" d:LayoutOverrides="Width, Height"/> <Rectangle MouseLeftButtonDown="TopSide_MouseLeftButtonDown" Height="2.977" x:Name="TopSide" Fill="#FF475A8D" Stroke="#FF000000" Cursor="SizeNS" StrokeThickness="0" Width="544.03" d:LayoutOverrides="Width, Height"/> <StackPanel Height="20" Width="537.7" Canvas.Left="3.03" Canvas.Top="2.978" x:Name="DragStackPanel" Orientation="Horizontal"> <Rectangle MouseLeftButtonDown="DragBar_MouseLeftButtonDown" Height="20" x:Name="DragBar" Fill="#FFA4B3E6" Stroke="#FF000000" StrokeThickness="0" Width="514.044" Cursor="Hand"/> <Canvas MouseLeftButtonDown="CloseButton_MouseLeftButtonDown" Height="20" x:Name="CloseButton" Width="22.568" VerticalAlignment="Top"> <Rectangle Height="20" Width="23.905" Stroke="#FF000000" StrokeThickness="0" d:LayoutOverrides="Width"> <Rectangle.Fill> <RadialGradientBrush> <GradientStop Color="#FF06217C" Offset="0"/> <GradientStop Color="#FFA4B3E6" Offset="1"/> </RadialGradientBrush> </Rectangle.Fill> </Rectangle> <Canvas Height="12.467" Width="3.183" Canvas.Left="10.784" Canvas.Top="3.59" d:LayoutOverrides="Width, Height"> <Rectangle Height="12.467" Width="3.183" RenderTransformOrigin="0.5,0.5" Fill="#FF0A0A0A" Stroke="#FF000000" d:LayoutOverrides="Width, Height"> <Rectangle.RenderTransform> <TransformGroup> <ScaleTransform/> <SkewTransform/> <RotateTransform Angle="31.484000167846681"/> <TranslateTransform/> </TransformGroup> </Rectangle.RenderTransform> </Rectangle> <Rectangle Height="12.467" Width="3.183" Fill="#FF0A0A0A" Stroke="#FF000000" RenderTransformOrigin="0.5,0.5" d:LayoutOverrides="Width, Height"> <Rectangle.RenderTransform> <TransformGroup> <ScaleTransform/> <SkewTransform/> <RotateTransform Angle="-36.589999237060546"/> <TranslateTransform/> </TransformGroup> </Rectangle.RenderTransform> </Rectangle> </Canvas> </Canvas> </StackPanel> </Canvas> </UserControl>
using System; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Ink; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using System.Windows.Media.Imaging; namespace SilverlightDesktopTest { public partial class SilverlightWindowControl : UserControl { Point StartingDragPoint; string _WindowPicture; public string WindowPicture { set { BitmapImage objBitmapImage = new BitmapImage(new Uri(value, UriKind.Relative)); this.WindowImage.Source = objBitmapImage; _WindowPicture = value; } get { return _WindowPicture; } } public SilverlightWindowControl() { // Required to initialize variables InitializeComponent(); } #region Close Button private void CloseButton_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { this.WindowControl.Visibility = Visibility.Collapsed; } #endregion #region DragBar private void DragBar_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { Canvas objCanvas = (Canvas)this.Parent; //Find the highest elemnt int intHighestElement = 0; foreach (UIElement UIElement in objCanvas.Children) { int intTmpHighestElement = Canvas.GetZIndex(UIElement); intHighestElement = (intTmpHighestElement > intHighestElement) ? intTmpHighestElement : intHighestElement; } Canvas.SetZIndex(this, intHighestElement + 1); //Start Drag FrameworkElement DragBar = (FrameworkElement)sender; DragBar.CaptureMouse(); // Set the starting point for the drag StartingDragPoint = e.GetPosition(DragBar); DragBar.MouseMove += new MouseEventHandler(DragBar_MouseMove); DragBar.MouseLeftButtonUp += new MouseButtonEventHandler(DragBar_MouseLeftButtonUp); } private void DragBar_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { //Stop Drag FrameworkElement DragBar = (FrameworkElement)sender; DragBar.ReleaseMouseCapture(); DragBar.MouseMove -= new MouseEventHandler(DragBar_MouseMove); DragBar.MouseLeftButtonUp -= new MouseButtonEventHandler(DragBar_MouseLeftButtonUp); } private void DragBar_MouseMove(object sender, MouseEventArgs e) { Canvas Canvas = (Canvas)this.Parent; Point Point = e.GetPosition(Canvas); Canvas.SetLeft(this, Point.X - StartingDragPoint.X); Canvas.SetTop(this, Point.Y - StartingDragPoint.Y); } #endregion #region RightSide private void RightSide_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { //Start Drag FrameworkElement RightSide = (FrameworkElement)sender; RightSide.CaptureMouse(); // Set the starting point for the drag StartingDragPoint = e.GetPosition(RightSide); RightSide.MouseMove += new MouseEventHandler(RightSide_MouseMove); RightSide.MouseLeftButtonUp += new MouseButtonEventHandler(RightSide_MouseLeftButtonUp); } void RightSide_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { //Stop Drag FrameworkElement RightSide = (FrameworkElement)sender; RightSide.ReleaseMouseCapture(); RightSide.MouseMove -= new MouseEventHandler(RightSide_MouseMove); RightSide.MouseLeftButtonUp -= new MouseButtonEventHandler(RightSide_MouseLeftButtonUp); } void RightSide_MouseMove(object sender, MouseEventArgs e) { Point Point = e.GetPosition(this); if (Point.X > (StartingDragPoint.X + 60)) { this.SetValue(WidthProperty, (double)(Point.X - (StartingDragPoint.X))); Window.SetValue(WidthProperty, (double)(Point.X - (StartingDragPoint.X + 3))); DragBar.SetValue(WidthProperty, (double)(Point.X - (StartingDragPoint.X + 27))); DragStackPanel.SetValue(WidthProperty, (double)(Point.X - (StartingDragPoint.X + 1))); TopSide.SetValue(WidthProperty, (double)(Point.X - (StartingDragPoint.X - 3))); BottomSide.SetValue(WidthProperty, (double)(Point.X - (StartingDragPoint.X - 3))); Canvas.SetLeft(RightSide, Point.X - (StartingDragPoint.X)); } } #endregion #region LeftSide private void LeftSide_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { //Start Drag FrameworkElement LeftSide = (FrameworkElement)sender; LeftSide.CaptureMouse(); // Set the starting point for the drag StartingDragPoint = e.GetPosition(LeftSide); Point ControlPoint = e.GetPosition(this); StartingDragPoint.X = StartingDragPoint.Y - ControlPoint.Y - .5; LeftSide.MouseMove += new MouseEventHandler(LeftSide_MouseMove); LeftSide.MouseLeftButtonUp += new MouseButtonEventHandler(LeftSide_MouseLeftButtonUp); } void LeftSide_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { //Stop Drag FrameworkElement LeftSide = (FrameworkElement)sender; LeftSide.ReleaseMouseCapture(); LeftSide.MouseMove -= new MouseEventHandler(LeftSide_MouseMove); LeftSide.MouseLeftButtonUp -= new MouseButtonEventHandler(LeftSide_MouseLeftButtonUp); } void LeftSide_MouseMove(object sender, MouseEventArgs e) { Point LeftSidePoint = e.GetPosition(LeftSide); double PointDifference = LeftSidePoint.X - StartingDragPoint.X; if (LeftSidePoint.X < (Window.Width - (PointDifference) - 60)) { this.SetValue(WidthProperty, (double)(PointDifference)); Window.SetValue(WidthProperty, (double)Window.Width - (PointDifference)); DragStackPanel.SetValue(WidthProperty, (double)DragStackPanel.Width - (PointDifference)); DragBar.SetValue(WidthProperty, (double)DragBar.Width - (PointDifference)); TopSide.SetValue(WidthProperty, (double)TopSide.Width - (PointDifference)); BottomSide.SetValue(WidthProperty, (double)BottomSide.Width - (PointDifference)); Canvas Canvas = (Canvas)this.Parent; Point Point = e.GetPosition(Canvas); Canvas.SetLeft(this, Point.X - StartingDragPoint.X); Canvas.SetLeft(RightSide, (double)TopSide.Width + StartingDragPoint.X); } } #endregion #region BottomSide private void BottomSide_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { //Start Drag FrameworkElement BottomSide = (FrameworkElement)sender; BottomSide.CaptureMouse(); // Set the starting point for the drag StartingDragPoint = e.GetPosition(BottomSide); BottomSide.MouseMove += new MouseEventHandler(BottomSide_MouseMove); BottomSide.MouseLeftButtonUp += new MouseButtonEventHandler(BottomSide_MouseLeftButtonUp); } void BottomSide_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { //Stop Drag FrameworkElement BottomSide = (FrameworkElement)sender; BottomSide.ReleaseMouseCapture(); BottomSide.MouseMove -= new MouseEventHandler(BottomSide_MouseMove); BottomSide.MouseLeftButtonUp -= new MouseButtonEventHandler(BottomSide_MouseLeftButtonUp); } void BottomSide_MouseMove(object sender, MouseEventArgs e) { Point Point = e.GetPosition(this); if (Point.Y > (StartingDragPoint.Y + 60)) { this.SetValue(HeightProperty, (double)(Point.Y - (StartingDragPoint.Y))); Window.SetValue(HeightProperty, (double)(Point.Y - (StartingDragPoint.Y)) - 22); LeftSide.SetValue(HeightProperty, (double)(Point.Y - (StartingDragPoint.Y))); RightSide.SetValue(HeightProperty, (double)(Point.Y - (StartingDragPoint.Y))); Canvas.SetTop(BottomSide, Point.Y - (StartingDragPoint.Y)); } } #endregion #region TopSide private void TopSide_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { //Start Drag FrameworkElement TopSide = (FrameworkElement)sender; TopSide.CaptureMouse(); // Set the starting point for the drag StartingDragPoint = e.GetPosition(TopSide); Point ControlPoint = e.GetPosition(this); StartingDragPoint.Y = StartingDragPoint.X - ControlPoint.X + 1; TopSide.MouseMove += new MouseEventHandler(TopSide_MouseMove); TopSide.MouseLeftButtonUp += new MouseButtonEventHandler(TopSide_MouseLeftButtonUp); } void TopSide_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { //Stop Drag FrameworkElement TopSide = (FrameworkElement)sender; TopSide.ReleaseMouseCapture(); TopSide.MouseMove -= new MouseEventHandler(TopSide_MouseMove); TopSide.MouseLeftButtonUp -= new MouseButtonEventHandler(TopSide_MouseLeftButtonUp); } void TopSide_MouseMove(object sender, MouseEventArgs e) { Point TopSidePoint = e.GetPosition(TopSide); double PointDifference = TopSidePoint.Y - StartingDragPoint.Y; if (TopSidePoint.X < (LeftSide.Height - (PointDifference) + 34)) { this.SetValue(HeightProperty, (double)(PointDifference)); Window.SetValue(HeightProperty, (double)Window.Height - (PointDifference)); LeftSide.SetValue(HeightProperty, (double)LeftSide.Height - (PointDifference)); RightSide.SetValue(HeightProperty, (double)RightSide.Height - (PointDifference)); Canvas Canvas = (Canvas)this.Parent; Point Point = e.GetPosition(Canvas); Canvas.SetTop(this, Point.Y - StartingDragPoint.Y); Canvas.SetTop(BottomSide, (double)LeftSide.Height + StartingDragPoint.Y); } } #endregion } }