UIElement 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
UIElement
是大部分 Windows 運行時間 UI 物件的基類,這些物件具有視覺外觀,而且可以在應用程式的使用者介面中處理基本輸入。
public ref class UIElement : DependencyObject, IAnimationObject, IVisualElement, IVisualElement2
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class UIElement : DependencyObject, IAnimationObject, IVisualElement, IVisualElement2
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public class UIElement : DependencyObject, IAnimationObject, IVisualElement, IVisualElement2
Public Class UIElement
Inherits DependencyObject
Implements IAnimationObject, IVisualElement, IVisualElement2
- 繼承
- 衍生
- 屬性
- 實作
備註
UIElement
是基底元素:它是許多其他 Windows 執行時間類別繼承自 的類別,以支援 XAML UI 元素模型。
UIElement
定義的屬性、方法和事件是由數百個其他 Windows 執行時間類別所繼承。
UIElement
不會公開公用建構函式。 一般而言,您不會直接從 UIElement
或 FrameworkElement 衍生類別。 衍生自訂類別較常使用的基類是下列類別:
- 未密封的特定控制項(例如,TextBox)
- 控件基類(Control、ContentControl、UserControl)
- 瀏覽元素(Page、Frame)
- 面板類別(基類 Panel,或特定非密封實作,例如 Grid)
UIElement
類別會作為 Windows 執行時間 API 中許多屬性和方法的類型參數。 例如,Border 的 Child 屬性會採用單一 UIElement
,代表 Border 周圍繪製的專案。 您可以為這類屬性提供任何 UIElement
衍生元素,包括您定義的自定義控件。
UIElementCollection 類別提供 UIElement
項目的強型別集合。
UIElementCollection
做為包含數個子元素之物件的屬性類型,例如任何 Panel 類別的 Children 屬性。
UIElement API 和功能
UIElement
擴充 DependencyObject,這是另一個基底元素,並新增對各種 Windows 運行時間功能區域的支援。
回應用戶互動的輸入和事件
UI 中可見元素的大部分輸入行為都定義在 UIElement
類別中。 這包括鍵盤、滑鼠、觸控、拖放和焦點互動的事件。 如需詳細資訊,請參閱 處理指標輸入、鍵盤互動,以及 自定義用戶互動。
支援輸入和使用者互動之 UIElement
的突出 API:
- 指標事件:PointerPressed、PointerReleased、PointerMoved、PointerEnteredPointerExited
- 密鑰處理事件:KeyDownKeyUp
- 焦點:GotFocusLostFocus
- 指標擷取:CapturePointer、PointerCanceled、PointerCaptureLost、ReleasePointerCapturePointerCaptures
- 拖放:DragOver、Drop、DragEnter、DragLeave、AllowDrop
- 影響基本輸入處理方式的 屬性:IsHitTestVisible、AllowDrop
手勢和操作
手勢和操作也是處理輸入和用戶互動的方法。 API 會分別列在這裡,因為這些事件代表系統如何與裝置層級的輸入動作互動,並將其解譯為用戶互動。 操作是處理動態多點觸控互動的方式,例如捏合和伸展。 手勢和操作會一起提供觸控模式來與UWPapp進行觸控互動。 如需詳細資訊,請參閱 自定義使用者互動 和 觸控互動設計。
支援手勢和操作之 UIElement
的突出 API:
- 手勢事件:DoubleTapped、控股、RightTapped、點選
- Manipulation 事件:ManipulationCompleted、ManipulationDelta、ManipulationInertiaStarting、ManipulationStarted、ManipulationStarting
- 影響手勢和操作處理方式的 屬性:IsHoldingEnabled 和其他 Is*Enabled、ManipulationMode
基本外觀
Visibility 和 Opacity 屬性經常用來調整 UI 中元素的外觀,特別是在樣式、範本和視覺狀態內。 Clip、RenderTransform和 Transitions 属性,對於產生互動和 UI 元素的不同外觀都很有用。
基本版面配置
UIElement
類別提供配置特性的起點,其屬性包括 DesiredSize 和 Arrange 和 Measure 方法。
FrameworkElement 新增更多版面配置功能。 如需詳細資訊,請參閱 使用 XAML 和 FrameworkElement定義版面配置。
路由事件
UIElement
的大部分輸入事件都是路由事件 。 路由事件會啟用內建事件處理通知系統,讓父物件可以在未處理事件時處理來自物件樹狀結構中子對象的輸入事件。 此輸入事件行為適用於輸入區域群組,以及控制組合。 如需詳細資訊,請參閱
支援路由事件的 UIElement
突出 API:AddHandler、RemoveHandler、 *Event 属性。
其他平台支援
- OnCreateAutomationPeer 可讓類別使用自定義 AutomationPeer 來支援其Microsoft UI 自動化。
- RenderTransform、TransformToVisual、Projection、CompositeMode、CacheMode 和 FindSubElementsForTouchTargeting,對於進階 UI 配置案例很有用。
UIElement 相依性屬性
UIElement
基底元素類別的許多讀寫屬性都是相依性屬性。 相依性屬性支援一些使用 C++ 或 C# 之應用程式的基本程式設計模型功能,例如樣式和範本、數據系結、XAML 資源參考和屬性變更邏輯。 如需相依性屬性及其支援功能的詳細資訊,請參閱 相依性屬性概觀。
UIElement 衍生類別
唯一衍生自 UIElement
的 Windows 執行時間類別是 FrameworkElement。 如需衍生自
屬性
方法
事件
AccessKeyDisplayDismissed |
發生於不應再顯示存取金鑰時。 |
AccessKeyDisplayRequested |
發生於使用者要求顯示存取金鑰時。 |
AccessKeyInvoked |
發生於使用者完成存取金鑰順序時。 |
BringIntoViewRequested |
發生於呼叫此元素或其其中一個子系 StartBringIntoView 時。 |
CharacterReceived |
當輸入佇列收到單一撰寫字元時發生。 |
ContextCanceled |
發生於內容輸入手勢繼續操作手勢時,通知專案不應開啟內容飛出視窗。 |
ContextRequested |
發生於使用者已完成內容輸入手勢時,例如按兩下滑鼠右鍵。 |
DoubleTapped |
發生於未處理 DoubleTap 此元素點擊測試區域的互動時。 |
DragEnter |
當輸入系統報告具有這個專案作為目標的基礎拖曳事件時發生。 |
DragLeave |
當輸入系統報告基礎拖曳事件時,此專案為原點時發生。 |
DragOver |
當輸入系統報告基礎拖曳事件時,此專案會作為潛在的置放目標發生。 |
DragStarting |
發生於起始拖曳作業時。 |
Drop |
當輸入系統報告具有這個項目作為置放目標的基礎置放事件時發生。 |
DropCompleted |
發生於以這個專案作為來源結束的拖放作業時。 |
GettingFocus |
發生於 UIElement 收到焦點之前。 此事件會以同步方式引發,以確保事件發生反升時不會移動焦點。 |
GotFocus |
發生於 UIElement 收到焦點時。 這個事件會以異步方式引發,因此焦點可以在升泡完成之前再次移動。 |
Holding |
發生於未處理的 保留 互動發生在這個項目的點擊測試區域時。 |
KeyDown |
發生於按下鍵盤按鍵時,UIElement 有焦點時。 |
KeyUp |
當 UIElement 焦點時放開鍵盤按鍵時發生。 |
LosingFocus |
發生於 UIElement 失去焦點之前。 此事件會以同步方式引發,以確保事件發生反升時不會移動焦點。 |
LostFocus |
發生於 UIElement 失去焦點時。 這個事件會以異步方式引發,因此焦點可以在升泡完成之前再次移動。 |
ManipulationCompleted |
發生於 UIElement 上的操作完成時。 |
ManipulationDelta |
當輸入裝置在操作期間變更位置時發生。 |
ManipulationInertiaStarting |
當輸入裝置在操作和慣性開始時與 UIElement 物件失去接觸時發生。 |
ManipulationStarted |
當輸入裝置開始操作 UIElement時發生。 |
ManipulationStarting |
第一次建立操作處理器時發生。 |
NoFocusCandidateFound |
發生於使用者嘗試移動焦點時(透過定位鍵或方向箭號),但焦點不會移動,因為移動方向找不到任何焦點候選專案。 |
PointerCanceled |
發生於使聯繫人異常失去聯繫人的指標時。 |
PointerCaptureLost |
當這個專案先前持有的指標擷取移至另一個專案或其他地方時發生。 |
PointerEntered |
當指標進入這個項目的點擊測試區域時發生。 |
PointerExited |
發生於指標離開這個項目的點擊測試區域時。 |
PointerMoved |
發生於指標在指標保留在這個專案點擊測試區域內時移動。 |
PointerPressed |
當指標裝置起始此元素內的 Press 動作時發生。 |
PointerReleased |
發生於先前起始 Press 動作的指標裝置,同時在此元素內。 請注意,Press 動作的結尾不保證會引發 |
PointerWheelChanged |
發生於指標滾輪的差異值變更時。 |
PreviewKeyDown |
發生於按下鍵盤按鍵時,UIElement 有焦點時。 |
PreviewKeyUp |
當 UIElement 焦點時放開鍵盤按鍵時發生。 |
ProcessKeyboardAccelerators |
發生於按下 鍵盤快捷方式(或快捷鍵) 時。 |
RightTapped |
當指標位於 元素上方時發生右鍵輸入刺激時發生。 |
Tapped |
發生於未處理的 Tap 互動發生在這個項目的點擊測試區域時。 |
適用於
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應