WPF核心對象模型-類圖和解析

1

DispatcherObject是根基類,經過繼承該類,能夠獲得訪問建立該對象的UI線程的Dispatcher對象的能力。經過Dispatcher對象,能夠將代碼段合併入該UI線程執行。框架

DependencyObject是核心基類,用於實現依賴屬性機制。依賴屬性是一個比CLR屬性更強大的屬性模型,該模型支持更改通知,默認值繼承等特性,並能減小屬性存儲空間。DependencyObject經過GetValue和SetValue等方法支持依賴屬性機制。繼承該類的幾個下一層基類Visual,Visual3D,TriggerBase, Freezable及其派生類都得到了依賴屬性機制的支持。ide

表明依賴屬性的是DependencyProperty類,其中包含名稱,所屬類型,屬性類型等屬性,經過Register靜態方法註冊依賴屬性,經過RegisterAttached靜態方法註冊附加屬性。工具

直接繼承根基類DispatcherObject的還有FrameworkTemplate和Style,FrameworkTemplate用於支持模板機制,Style用於支持樣式機制。佈局

繼承FrameworkTemplate的包括數據模板DataTemplate,控件模板ControlTemplate,項面板模板ItemsPanelTemplate。定製數據呈現方式使用DataTemplate,可指定DataType用於統必定製某數據類型的呈現方式。HierarchicalDataTemplate繼承DataTemplate,表明有層次結構的數據模板,可經過ItemsSource指定子級數據綁定的數據源,經過ItemTemplate指定子級數據的呈現方式。定製控件呈現方式使用ControlTemplate,可設置觸發器。定製多項內容控件的條目佈局方式使用ItemsPanelTemplate。字體

Style類用於樣式抽取,樣式和其餘資源放在資源字典ResourceDictionary中。Style經過TargetType屬性指定做用的類型,經過BasedOn屬性指定基樣式,經過在Setters中加入Setter設置屬性對應的值,還可在Triggers中加入觸發器。spa

ResourceDictionary可經過MergedDictionaries進行資源字典合併,經過Source指定引用的資源字典地址,經過索引器查找資源。線程

RoutedEvent類用於支持另外一個重要機制路由事件,RoutedEvent的屬性包含名稱,所屬類型,路由策略和處理器類型。經過EventManager的RegisterRoutedEvent靜態方法註冊路由事件。orm

DispatcherTimer是UI線程定時器,可設置間隔Interval,是否啓用IsEnabled,經過Tick事件指定處理邏輯,經過Start和Stop方法開始和中止定時器。對象

Application表明應用程序,經過Current獲得當前實例,MainWindow獲得主窗口,可在Resources中添加應用程序級資源,經過StartupUri設置啓動頁面。blog

核心基類DependencyObject的直接派生類爲Visual,Visual3D,TriggerBase和Freezable。

Visual表明2D可視元素, Visual3D表明3D可視元素,UIElement3D繼承Visual3D表明3D UI元素,其又有兩個派生類ModelUIElement3D和ContainerUIElement3D 。

TriggerBase用於支持觸發器機制,其派生類包括Trigger,MultiTrigger,DataTrigger,MultiDataTrigger和EventTrigger。

Animatable是Freezable的派生類,其又有兩個派生類Brush和ImageSource分別表明畫刷和圖片源。畫刷包括純色畫刷SolidColorBrush,可設置顏色Color,漸變畫刷GradientBrush,可設置漸變端點GradientStop,和瓷磚畫刷TileBrush,可設置拉伸方式。GradientBrush又分爲線性Linear和徑向Radial兩種。圖片畫刷ImageBrush是一種TileBrush,可設置圖片源ImageSource。

ImageSource的派生類包括位圖圖片源BitmapSource,繪畫圖片源DrawingImage和3D圖片源D3DImage,BitmapSource又有位圖圖片BitmapImage和可寫位圖圖片WriteableBitmap兩個派生類。

直接繼承UIElement的是FrameworkElement,UIElement位於WPF核心層PresentationCore中,FrameworkElement及其派生類位於WPF框架層PresentationFramework中。UIElement提供了裁剪Clip,命令綁定CommandBindings,輸入綁定InputBindings,是否可用IsEnabled,透明度Opacity,渲染變換RenderTransform,可見性Visibility等屬性,經過RaiseEvent方法觸發路由事件。FrameworkElement提供了鼠標光標Cursor,數據上下文DataContext,寬高,水平垂直對齊,外邊距Margin,資源集合Resources,樣式Style,Tag,工具提示ToolTip,觸發器集合Triggers等屬性,經過SetBinding方法設置綁定。

VisualStateManager,VisualStateGroup和VisualState用於實現可視狀態管理機制。

控件Control, 文本塊TextBlock,圖片Image,頁Page,裝飾Decorator,面板Panel,彈出層Popup,形狀Shape等直接繼承FrameworkElement,它們都是框架元素。

TextBlock可設置文本Text和文本對齊方式TextAlignment。Image可設置源Source和拉伸方式Stretch。Page可設置內容Content和標題Title。Popup可設置子元素Child,是否打開IsOpen,位置Placement等屬性。

Decorator是裝飾元素的基類,可設置子元素Child,存在邊框Border和查看框Viewbox兩個派生類。Border可設置背景Background,邊框畫刷BorderBrush,邊框寬度BorderThickness,圓角半徑CornerRadius和內邊距Padding。Viewbox可設置拉伸方式Stretch和拉伸方向StretchDirection。

Panel是佈局容器的基類,可設置背景,可添加子元素。其派生類有網格佈局Grid,可設置行列定義,堆積佈局StackPanel,可設置方向,畫布佈局Canvas,停靠佈局DockPanel,流式佈局WrapPanel,可設置排列方向和項的寬高,統一網格佈局UniformGrid,還有虛基類VirtualizingPanel。VirtualizingStackPanel是VirtualizingPanel的一種實現。

Shape是形狀的基類,包含填充畫刷Fill,線框畫刷Stroke,線框寬度StrokeThickness,拉伸方式Stretch等屬性。其派生類爲矩形Rectangle,橢圓Ellipse,線Line和路徑Path。

最後說一下Control極其派生類體系。Control包含背景Background,邊框畫刷BorderBrush,邊框寬度BorderThickness,字體FontFamily,字號FontSize,字的粗細FontWeight,前景色Foreground,水平和垂直內容對其方式,內邊距Padding和控件的模板Template。其派生類包括ContentControl和ItemsControl兩個大族,分別表明有單項內容的控件和有多項內容的控件,以及TextBoxBase和RangeBase等小族。

RangeBase的派生類爲ProgressBar和Slider。TextBoxBase的派生類爲TextBox和RichTextBox。

ContentControl有單項內容,可設置內容Content,內容模板ContentTemplate,或內容模板選擇器ContentTemplateSelector。 存在窗口Window,用戶控件UserControl,工具提示ToolTip,滾動查看器ScrollViewer,框架Frame等派生類,以及有頭部的單項內容控件HeaderedContentControl和基按鈕ButtonBase兩個重要的派生類。

HeaderedContentControl可設置頭部Header,頭部模板HeaderTemplate,或頭部模板選擇器HeaderTemplateSelector,派生類爲展開器Expander,組容器GroupBox,標籤頁項TabItem等。

ButtonBase可設置點擊模式ClickMode,命令Command,命令參數CommandParameter,派生類爲按鈕Button和切換按鈕ToggleButton。ToggleButton能夠設置是否選中IsChecked和是否爲三態IsThreeState, 又有單選框RadioButton和複選框CheckBox兩個派生類,其中RadioButton可設置組名GroupName。

ItemsControl有多項內容,可設置綁定數據源ItemsSource,項模板ItemTemplate,或項模板選擇器ItemTemplateSelector,項面板ItemsPanel,項容器樣式ItemContainerStyle,或項容器樣式選擇器ItemContainerStyleSelector等屬性。存在有頭部的多項內容控件HeaderedItemsControl和選擇器Selector兩個派生類。

HeaderedItemsControl可設置頭部Header,頭部模板HeaderTemplate,或頭部模板選擇器HeaderTemplateSelector,派生類爲樹視圖項TreeViewItem等。

Selector可設置選擇索引SelectedIndex或選擇項SelectedItem,派生類爲多選擇器MultiSelector,下拉框ComboBox,列表框ListBox和標籤頁控件TabControl。DataGrid是MultiSelector的派生類。

相關文章
相關標籤/搜索