Silverlight的几个知识点

来源:互联网 发布:锐捷网络破解 编辑:程序博客网 时间:2024/05/18 01:26

首先添加一个Grid

[xhtml]view plaincopyprint?
  1. <Gridx:Name="GTest"ShowGridLines="False"SizeChanged="GTest_SizeChanged">  </Grid> 

1. Grid动态添加新的列和行。

[c-sharp]view plaincopyprint?
  1. this.GTest.RowDefinitions.Add(new RowDefinition() {Height=new GridLength(30) }); 
  2. this.GTest.ColumnDefinitions.Add(new ColumnDefinition() { Width =new GridLength(1, GridUnitType.Star) }); 

2. 为Grid动态添加Border的样式。

[c-sharp]view plaincopyprint?
  1. Border tempBorder =new Border(); 
  2. tempBorder.BorderThickness =new Thickness(1); 
  3. tempBorder.BorderBrush =new SolidColorBrush(Colors.Red); 
  4. tempBorder.SetValue(Grid.ColumnProperty, 1); 
  5. tempBorder.SetValue(Grid.ColumnSpanProperty, 2); 
  6. this.GTest.Children.Add(tempBorder); 

3. 动态添加Button及Button的背景图片。

[c-sharp]view plaincopyprint?
  1. // Add new button 
  2.                Button btnNew =new Button(); 
  3.                ImageBrush imageBrush =new ImageBrush(); 
  4.                imageBrush.ImageSource =new BitmapImage(new Uri(@"../Images/New.gif", UriKind.Relative)); 
  5.                btnNew.Background = imageBrush; 
  6.                btnNew.Width = 20; 
  7.                btnNew.Height = 20; 
  8.                btnNew.SetValue(Grid.ColumnProperty, 0); 
  9.                btnNew.SetValue(Grid.RowProperty, iContentStart); 
  10.                btnNew.Click +=new RoutedEventHandler(btnNew_Click); 
  11.                titlePanel.Children.Add(btnNew); 

4. 鼠标移动事件。

[c-sharp]view plaincopyprint?
  1. Rectangle rec =new Rectangle(); 
  2.             rec.Stroke =new SolidColorBrush(Colors.Black); 
  3.             rec.Fill =new SolidColorBrush(Colors.Orange); 
  4.             rec.MouseLeftButtonDown +=new MouseButtonEventHandler(rec_MouseLeftButtonDown); 
  5.             rec.MouseLeftButtonUp +=new MouseButtonEventHandler(rec_MouseLeftButtonUp); 
  6.             rec.MouseMove +=new MouseEventHandler(rec_MouseMove); 
  7.  
  8. // Mouse Down Method 
  9.        private void rec_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
  10.         { 
  11.             FrameworkElement element = senderas FrameworkElement; 
  12.             mousePosition = e.GetPosition(null); 
  13.             trackingMouseMove =true
  14.  
  15.            if (null != element) 
  16.             { 
  17.                 element.CaptureMouse(); 
  18.                 element.Cursor = Cursors.Hand; 
  19.             } 
  20.             
  21.         } 
  22.  
  23. // Mouse Move Method 
  24. privatevoid rec_MouseMove(object sender, MouseEventArgs e) 
  25. FrameworkElement element = senderas FrameworkElement; 
  26.    if (trackingMouseMove) 
  27.     { 
  28.        double deltaV = e.GetPosition(null).Y - mousePosition.Y; 
  29.         double deltaH = e.GetPosition(null).X - mousePosition.X; 
  30.        double newTop = deltaV + (double)element.GetValue(Canvas.TopProperty); 
  31.         double newLeft = deltaH + (double)element.GetValue(Canvas.LeftProperty); 
  32.  
  33.         element.SetValue(Canvas.TopProperty, newTop); 
  34.         element.SetValue(Canvas.LeftProperty, newLeft); 
  35.  
  36.         mousePosition = e.GetPosition(null); 
  37.     } 
  38. // Mouse Move Method 
  39.        private void rec_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) 
  40.         { 
  41.             FrameworkElement element = senderas FrameworkElement; 
  42.  
  43.             Canvas.SetTop(element, 15); 
  44.              
  45.             trackingMouseMove =false
  46.             element.ReleaseMouseCapture(); 
  47.  
  48.             mousePosition.X = mousePosition.Y = 0; 
  49.             element.Cursor =null
  50.  
  51.            if (pop != null
  52.             { 
  53.                 pop.IsOpen =false
  54.             } 
  55.  
  56.            // Update the datebase 
  57.         } 
 

5, Grid的形状改变的时候,去改变Grid的类似那些Canvas控件的形状。

[c-sharp]view plaincopyprint?
  1. // First Remove the control in the Grid and ReBuild those controls that have been removed 
  2.         private void GTest_SizeChanged(object sender, SizeChangedEventArgs e) 
  3.         { 
  4.             List<UIElement> controlsToRemove =new List<UIElement>(); 
  5.            int RowsCount = this.GTest.RowDefinitions.Count; 
  6.  
  7.            for (int i = 2; i < RowsCount; i++) 
  8.             { 
  9.                 controlsToRemove = (from pControlin GTest.Children 
  10.                                     where (i == (int)pControl.GetValue(Grid.RowProperty)) 
  11.                                     select pControl).ToList<UIElement>(); 
  12.  
  13.                for (int j = 0; j < controlsToRemove.Count; j++) 
  14.                 { 
  15.                     GTest.Children.Remove(controlsToRemove[j]); 
  16.                 } 
  17.  
  18.                this.GTest.RowDefinitions.Remove(this.GTest.RowDefinitions[2]); 
  19.             } 
  20.  
  21.             BuildTR(postCollection); 
  22.         } 

6,利用WebService异步操作后台数据。

[c-sharp]view plaincopyprint?
  1.        private void UserControl_Loaded(object sender, RoutedEventArgs e) 
  2.         { 
  3.             BuildTRYear(); 
  4.             BuildTRMonth(); 
  5.  
  6.             BlogWebServiceSoapClient client =new BlogWebServiceSoapClient(); 
  7.             client.GetPostsCompleted +=new EventHandler<GetPostsCompletedEventArgs>(client_GetPostsCompleted); 
  8.             client.GetPostsAsync(); 
  9.         } 
  10.  
  11. privatevoid client_GetPostsCompleted(object sender, GetPostsCompletedEventArgs e) 
  12.         { 
  13.            if (e.Error == null
  14.             { 
  15.                 postCollection = e.Result; 
  16.                 BuildTR(postCollection); 
  17.             } 
  18.         } 

7,怎样去创建一个PopUp对话框,并设置他的位置和样式,以下代码是我写的一个popup类,用户就可以New一个,然后传入参数

contentTxt就是popup要显示的内容,xOffsite,yOffsite距离父控件的位置,canvas,父控件,这个popup不具有通用行,但是很好改,就可以去适合自己的popup对话框。

[c-sharp]view plaincopyprint?
  1. publicclass ContentPop 
  2.   { 
  3.      private string content =string.Empty; 
  4.  
  5.      private bool isAdd =true
  6.  
  7.      public bool IsAdd 
  8.       { 
  9.          get { return isAdd; } 
  10.          set { isAdd = value; } 
  11.       } 
  12.  
  13.      public string Content 
  14.       { 
  15.          get { return content; } 
  16.          set 
  17.           { 
  18.               content = value; 
  19.              if (thisPopUp.Child != null
  20.               { 
  21.                   thisPopUp.Child =null
  22.                   AddContent(content); 
  23.               } 
  24.           } 
  25.       } 
  26.       private bool isOpen = false
  27.  
  28.       public bool IsOpen 
  29.       { 
  30.          get { return isOpen; } 
  31.          set 
  32.           { 
  33.               isOpen = value; 
  34.               thisPopUp.IsOpen = isOpen; 
  35.           } 
  36.       } 
  37.      private Popup thisPopUp = null
  38.  
  39.      public Popup ThisPopUp 
  40.       { 
  41.          get { return thisPopUp; } 
  42.       } 
  43.      private double xOffsite; 
  44.  
  45.      public double XOffsite 
  46.       { 
  47.          get { return xOffsite; } 
  48.          set 
  49.           { 
  50.               xOffsite = value; 
  51.               thisPopUp.HorizontalOffset = xOffsite; 
  52.           } 
  53.       } 
  54.       private double yOffsite; 
  55.  
  56.       public double YOffsite 
  57.       { 
  58.          get { return yOffsite; } 
  59.          set 
  60.           { 
  61.               yOffsite = value; 
  62.               thisPopUp.VerticalOffset = yOffsite; 
  63.           } 
  64.       } 
  65.  
  66.       private Canvas parantCanvas; 
  67.  
  68.       public Canvas ParantCanvas 
  69.       { 
  70.          get { return parantCanvas; } 
  71.          set 
  72.           { 
  73.               parantCanvas = value; 
  74.               parantCanvas.Children.Add(thisPopUp); 
  75.           } 
  76.       } 
  77.      private Border border = null
  78.  
  79.      public ContentPop(string content,double xOffsite,double yOffsite,Canvas canvas) 
  80.       { 
  81.           thisPopUp =new Popup(); 
  82.  
  83.           AddContent(content); 
  84.  
  85.           canvas.Children.Add(thisPopUp); 
  86.           thisPopUp.HorizontalOffset = xOffsite; 
  87.           thisPopUp.VerticalOffset = xOffsite; 
  88.  
  89.           thisPopUp.IsOpen =true
  90.  
  91.          this.content = content; 
  92.          this.xOffsite = xOffsite; 
  93.          this.yOffsite = yOffsite; 
  94.          this.isOpen = true
  95.       } 
  96.  
  97.      private void AddContent(string content) 
  98.       { 
  99.          if (thisPopUp.Child == null
  100.           { 
  101.               border =new Border(); 
  102.               border.BorderBrush =new SolidColorBrush(Colors.Black); 
  103.               border.BorderThickness =new Thickness(0); 
  104.  
  105.               StackPanel panel1 =new StackPanel(); 
  106.  
  107.               TextBlock textblock1 =new TextBlock(); 
  108.               textblock1.Text = content; 
  109.               textblock1.Opacity = 100; 
  110.               panel1.Children.Add(textblock1); 
  111.               border.Child = panel1; 
  112.  
  113.               thisPopUp.Child = border; 
  114.           } 
  115.       } 
  116.   } 

原创粉丝点击