WP7控件開發學習筆記(一)

WP7控件開發(一)
 一、UIElement控件通用屬性
 -Height/Width:用戶設置的控件大小,是預期的大小
 -ActualHeight/ActualWidth:獲取控件的實際大小
 -MaxHeight/MaxWidth & MinHeight/MinWidth :設置控件大小的三個屬性()如果值發生衝突,首先要保證的是Min然後是Max,但是這兩個值一定要在Height/Width設置值之間纔有效
 -Cursor:設置/獲取控件光標形狀
 -DataContext:設置或獲取控件數據內容
 -HorizontalAlignment/VerticalAlignment:設置/獲取控件水平/垂直方向的對其方式
 -Language:設置/獲取localization/globalization語言信息
 -Margin:設置/獲取控件與頁面的邊距
 -Name:設置/獲取控件的名稱
 -Parent:設置獲取控件的父容器
 -Resource:設置/獲取控件資源字典,使資源像樣式那樣通過引用資源竄名,在Xaml中使用
 -Style:設置/或獲取控件的外觀樣式,也可以先定義好綁定到多個控件上
 -Tag:爲控件添加標籤說明
 -CacheMOde:設置/獲取一個值,該值指示應在可能高速緩存已呈現的內容
 -Clip:設置/獲取控件剪裁效果
 -DesireSize:獲取系統佈局大小,對於佈局的調整很有用
 -Opacity:設置/獲取控件的透明度
 -OpacityMask:設置/獲取一個控件蒙版,來產生蒙版透明效果
 -UseLayoutRounding:設置/獲取控件及子控件是否按子像素進行佈局,使控件外觀圓滑清晰
 -Visiblity:設置/獲取控件是否可見
 -Background:設置/獲取控件的背景效果
 -Projection:設置/獲取控件的3-D透視效果
 -Foreground:設置/獲取字體顏色
 -RenderTransformOrigin:設置/獲取變形的起始點
 -RenderTransform:設置/獲取變形效果
 -Template:設置或獲取控件模板
 -IsHitTestVisible:獲取或設置控件是否接受焦點事件
 -HorizontalContentsAlignment/VerticalContentsAligment:獲取或設置控件內容的對齊方式

二、容器控件(Grid,Canvas,StackPanel,Border,PopUp,ScrollView)
   1、Grid的使用
   2、Canvas的使用:用來精確定位容器內的控件座標,以及層次關係
   3、StackPanel使用:設置控件的排列順序
   4、Border使用:可以容納其它控件
   5、PopUp:自身可以被打開和關閉,通常用來製作自定義的消息彈出框和輸入框
   7、ScrollView:拖動顯示其包含的子控件的內容
三、按鈕控件的使用(Button,HyperlinkButton,RepeatButton,ToggleButton)
   1、HyperlinkButton:用於連接本地或Web地址,當鏈接Web地址時,一定要在在標籤里加上TargetName=“_Self”的屬性值
   2、RepeatButton:按下後不斷觸發Click事件
   3、ToggleButton:開關按鈕,三種狀態Checked、Unchecked、Indeterminate
   
控件開發(二)
   1、PasswordBox:用於輸入自定義遮罩字符的密碼框控件,屬性PasswordChar用來顯示輸入的密碼替換符號
   2、TextBox:可以讓軟鍵盤產生不同的鍵面效果;InputScope屬性可通過代碼獲取屬性列表
typeof(InputScopeNameValue).GetFields(BindingFlags.Public|BindingFlags.Static)
   3、Image控件:只能加載png和jpg的圖片
   4、MediaElement:播放本地或網絡上的多媒體;支持多媒體格式:WAV、MP3,支持mms、rtspt、rtsp流媒體協議;-屬性 IsMuted是否靜音 Stretch設置視頻畫面在控件中的填充方式 AutoPlay是否自動播放;-事件 MediaOpened MediaEnded MediaFailed 注意:其對視頻的格式和幀大小有相應的要求
   5、TextBlack:在頁面上顯示文字
   6、CheckBox:多選控件;不能通過Width和Height來改變大小;可以通過其屬性RenderTransform的ScaleTransform(ScaleX、ScaleY)變形改變大小
   7、RadioButton:單選按鈕;其改變大小的方式同CheckBox
   8、ProgressBar:兩種類型:顯示確切進度和不斷重複的動畫
   9、Slider:可以設置水平、垂直方向的滑竿
   10、Thumb:通過拖動,獲取連續的座標,三個基本事件DragDelta(鼠標移動時)、DragStart(開始拖動)、DragComplete(拖動完成)
   11、ListBox:相當一個容器,可以通過ListItem來組合多個控件而得到不同功能的List

控件開發(三)-繪圖控件,地圖控件
   -InkPresenter:產生手寫效果
    示例代碼:
        Stroke newStroke;
        private void inkPresenter1_LostMouseCapture(object sender, MouseEventArgs e)
        {
            newStroke = null;//失去焦點時銷燬上一次的Stroke
        }

        private void inkPresenter1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            inkPresenter1.CaptureMouse();//開始捕獲鼠標移動路徑
            StylusPointCollection spc = new StylusPointCollection();
            spc.Add(e.StylusDevice.GetStylusPoints(inkPresenter1));
            newStroke = new Stroke();
            this.inkPresenter1.Strokes.Add(newStroke);
        }

        private void inkPresenter1_MouseMove(object sender, MouseEventArgs e)
        {
            if (newStroke != null)
            {
                //記錄鼠標在inkPresenter1上的移動的點
                newStroke.StylusPoints.Add(e.StylusDevice.GetStylusPoints(inkPresenter1));
            }
        }
   -Path:通過Markup Syntax來繪製一系列的線條,通過Geometries來繪製形狀
    示例:
     <Path Height="428" HorizontalAlignment="Left"
     Margin="12,127,0,0" Name="path1" Stroke="Red" StrokeThickness="10" VerticalAlignment="Top"       Width="456" Fill="Green">
      <Path.Data>
          <EllipseGeometry Center="200,200"  RadiusX="100" RadiusY="30"/>
      </Path.Data>
    </Path>
   -Ellipse:繪製圓形或橢圓形
   -Rectangle:繪製矩形
   -Line:繪製兩點間的連線
   -Polygon:繪製封閉多邊形
   -Polyline:繪製封閉、開發多邊形
   -Glyphs:繪製字母、符號、字符等,主要用來顯示Unicode字符,需要加載字體庫從網上下載字體庫,對於  使用不多的情況使用,否則會消耗系統的資源
   -Map控件:在使用時,首先要申請授權驗證密鑰 顯示模式設置有Road、Arial
          -顯示縮放按鈕:ZoomBarVisibility屬性
          -顯示比例尺:ScaleVisibility屬性 
          -加標記:用到Pushpin類
     //爲地圖加標記
            Pushpin pin = new Pushpin();
            pin.Location = new GeoCoordinate(30.3441333,120.342155132);
            pin.Width = 200;
            pin.Height = 200;
            pin.Content = "濟南";
            pin.Background = new SolidColorBrush(Colors.Red);
            mymap.Children.Add(pin);
          -繪製多變型區域:用到MapPolygon類 實例化 設置Locations屬性即可
     //在地圖上繪製多邊形
            MapPolygon polygon = new MapPolygon();
            polygon.Fill = new SolidColorBrush(Colors.Red);
            polygon.Stroke = new SolidColorBrush(Colors.Yellow);
            polygon.StrokeThickness = 5;
            polygon.Opacity = 0.7;
            polygon.Locations = new LocationCollection()
            {
                new GeoCoordinate(30,120),
                new GeoCoordinate(30,130),
                new GeoCoordinate(30,160),
                new GeoCoordinate(30,140)
            };
            mymap.Children.Add(polygon);
   -繪製多邊線:用到MapPolyline 實例化 設置Stroke屬性和Locatatoins
     //在地圖上繪製多邊線
            MapPolyline polyline = new MapPolyline();
            polyline.Stroke = new SolidColorBrush(Colors.Red);
            polyline.StrokeThickness = 5;
            polyline.Opacity = 0.5;
            polyline.Locations = new LocationCollection()
            {
                new GeoCoordinate(30.3424242,120.3432444),
                new GeoCoordinate(30.3424242,120.3432444)
            };
            mymap.Children.Add(polyline);
          -在地圖上添加圖片
      //在地圖上添加圖片
            Image image = new Image();
            image.Width = 100;
            image.Height = 100;
            image.Source = new BitmapImage(new Uri("Images/Pic1.jpg",UriKind.Relative));
            MapLayer imagelayer = new MapLayer();
            imagelayer.AddChild(image,new GeoCoordinate(30,120),PositionOrigin.BottomLeft);
            mymap.Children.Add(imagelayer);

WP7控件開發(四)-Silverlight Tookit控件集
包括:Contextmenu、ToggleSwitch、WrapPanel、DatePicker、TimePicker、AutoCompleteBox、NavigationTransition、ListPicker、LongListSelector
        -Contextmenu
  -長按彈出菜單
  -不能在容器控件中使用
 -ToggleSwitch:具有兩種狀態Checked和Unchecked
 -WrapPanel:用來對大量控件進行按順序排列的容器
 -DatePicker:設置日期時間,可通過ValueStringFormat來設置時間的顯示格式:{}{0:d},{}{0:t} ,{}{0:D},{}{0:T},{}{0:MM-dd-yyyy},{}{0:HH:mm}
 -TimePicker:設置時間時分秒
 -AutoCompleteBox:
     屬性:
  -FilterMode:匹配方式
  -IsDropDownOpen:下拉列表是否打開
  -IsTextCompletionEnable:自動完成匹配填寫
  -MaxDropDownHeight:下拉列表的最大高度
  -MinimumPopulateDelay:最小匹配時間
  -MinimumPrefixLength:最短匹配長度
  事件:
  -DropDownClosed
  -DropDownClosing
  -DropDownOpened
  -DropDownOpening
 -NavigationTransition:
  -實現頁面的切換效果
  -使用之前要將App.xaml.cs中InitializePhoneAppliation()函數裏的RootFrame進行修改
   如:RootFrame=new TransitionFrame();
  -五種動畫效果包括:RollTransition、RotateTransition、SlideTransition、      SwiveTranstion、TurnstileTransition
      示例:
       <toolkit:TransitionService.NavigationInTransition> //進入頁面動畫效果
                      <toolkit:NavigationInTransition>
     <toolkit:NavigationInTransition.Backward>
     <toolkit:RotateTransition Mode="In180Clockwise"/>//這是一個旋轉的動畫效果
    </toolkit:NavigationInTransition.Backward>
    <toolkit:NavigationInTransition.Forward>
     <toolkit:RotateTransition Mode="In180Clockwise"/>
    </toolkit:NavigationInTransition.Forward>
          </toolkit:NavigationInTransition>
      </toolkit:TransitionService.NavigationInTransition>
    <toolkit:TransitionService.NavigationOutTransition> //退出頁面動畫效果
   <toolkit:NavigationOutTransition>
    <toolkit:NavigationOutTransition.Backward>//後退的動畫效果
     <toolkit:RotateTransition Mode="Out180Clockwise"/>
    </toolkit:NavigationOutTransition.Backward>
    <toolkit:NavigationOutTransition.Forward>
     <toolkit:RotateTransition Mode="Out180Clockwise"/>
    </toolkit:NavigationOutTransition.Forward>//向前的動畫效果
   </toolkit:NavigationOutTransition>
    </toolkit:TransitionService.NavigationOutTransition>
 -ListPicker:簡單的列表框,Full Mode完整頁面的列表
 -LongLIstSelector:數據歸類列表,把數據進行綁定和分類
 -UserControl:用戶自定義控件,UserControl類,同樣繼承於UIElement
            示例:Waiting控件的實現

WP7控件開發(五)-Panorama全景視圖,Pivot樞軸視圖
 -Panorama視圖:使用一個超過屏幕寬度的長水平畫布,提供獨特顯示控件,數據和服務的方式,是一種選項、導航和數據的多屏幕         滾動菜單
  -結構包括:Background,Title,Items,Background圖片高度要爲800像素,寬度大於480像素,小於2000像素
 -Pivot視圖:快捷管理應用中的視圖或頁面,過濾數據,視圖分類
  -結構包括:Title,Header,PivotItem
  -使用注意:Header文字不要顯示過長,以免其他PivotItem中的Header無法顯示,在PivotItem中,不要使用ScrollViewer   或ListBox這類帶有手勢的控件
WP7控件開發(六)-DeepZoom技術
 -DeepZoom:源於遙感影像的金字塔顯示方式,提供了與高分辨率圖像進行交互的能力,可以快速縮放圖像而不影響應用的性能,加載或平移圖像時可以光滑過度
  -應用:高分辨率、極大圖像的瀏覽,3D合成圖像,廣告宣傳
  -分類:Single和Collection
 -DeepZoom Composer製作工具下載地址:http://www.microsoft.com/downloads/en/details.aspx?FamilyID=457B17B7-52BF-4BDA
 87A3-FA8A4673F8BF
 -MulitScaleImage:打開、放大和平移多分辨率圖像,快速任意縮放展示大圖形、高分辨率圖像的應用程序  -屬性:Source,UseSprings-springs animations,ViewportOrigin-CenterPoint,ViewportWidth-ZoomLevel
 

發佈了23 篇原創文章 · 獲贊 4 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章