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
定義焦點報告的事件 (GotFocus、LostFocus) ,UIElement
但不會定義 API 來以程式設計方式設定焦點。 這項功能是由 Control 類別所定義。
UIElement
不會公開公用建構函式。 一般而言,您不會直接從 UIElement
或 FrameworkElement 衍生類別。 衍生自定義類別的基類較常會是這些類別:
- 例如,未密封 (的特定控件 TextBox)
- 控件基類 (Control、ContentControl、UserControl)
- 頁面、框架) (導覽元素
- 面板類別 (基類 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、 PointerEntered、 PointerExited
- 密鑰處理事件:KeyDown、 KeyUp
- Focus:GotFocus、 LostFocus
- 指標擷取:CapturePointer、 PointerCanceled、 PointerCaptureLost、 ReleasePointerCapture、 PointerCaptures
- 拖放:DragOver、 Drop、 DragEnter、 DragLeave、 AllowDrop
- 影響基本輸入處理方式的屬性:IsHitTestVisible、 AllowDrop
手勢和操作
手勢和操作也是處理輸入和用戶互動的方法。 API 會在這裡個別列出,因為這些事件代表系統如何與裝置層級的輸入動作互動,並將其解譯為用戶互動。 操作是處理動態多重觸控互動的方式,例如捏合和延展。 手勢和操作同時提供觸控模式,以便與UWP app進行觸控互動。 如需詳細資訊,請參閱 自定義使用者互動 和 觸控互動設計。
的 UIElement
醒目 API 支援手勢和操作:
- 手勢事件:DoubleTapped、 Holding、 RightTapped、 點選
- 操作事件:ManipulationCompleted、 ManipulationDelta、 ManipulationInertiaStarting、 ManipulationStarted、 ManipulationStarting
- 影響手勢和操作處理方式的屬性:IsHoldingEnabled 和其他 Is*Enabled、 ManipulationMode
基本外觀
Visibility 和 Opacity 屬性經常用來調整 UI 中元素的外觀,特別是在樣式、範本和視覺狀態內。 Clip、RenderTransform 和 Transitions 屬性對於產生互動和不同外觀的 UI 元素都很有用。
基本版面配置
類別 UIElement
提供配置特性的起點,其中包含 DesiredSize 和 Arrange 和 Measure 方法等屬性。 FrameworkElement 新增更多版面配置功能。 如需詳細資訊,請參閱使用 XAML 和 FrameworkElement定義版面配置。
路由事件
的大部分輸入事件 UIElement
都是 路由事件。 路由事件會啟用內建的事件處理通知系統,如此一來,如果事件維持未處理狀態,父物件就可以處理物件樹狀結構中子對象的輸入事件。 此輸入事件行為適用於輸入區域群組,以及用於控制組合。 如需詳細資訊,請參閱事件與路由事件概觀。
的醒目 API UIElement
支援路由事件:AddHandler、RemoveHandler、*事件屬性。
其他平台支援
- OnCreateAutomationPeer 可讓類別針對其 Microsoft 使用者介面自動化 支援使用自定義 AutomationPeer。
- RenderTransform、TransformToVisual、投影、CompositeMode、CacheMode 和 FindSubElementsForTouchTargeting 適用於進階 UI 配置案例。
UIElement 相依性屬性
基底元素類別的許多讀寫屬性 UIElement
都是相依性屬性。 相依性屬性支援使用 C++ 或 C# 之應用程式的一些基本程序設計模型功能,例如樣式和範本、數據系結、XAML 資源參考和屬性變更邏輯。 如需相依性屬性及其支援功能的詳細資訊,請參閱 相依性屬性概觀。
UIElement 衍生類別
衍生自 UIElement
的唯一 Windows 執行階段 類別是 FrameworkElement。 For a list of the classes that derive from FrameworkElement, see the "FrameworkElement derived classes" section of the FrameworkElement reference topic.
屬性
方法
事件
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 動作的結尾不保證會引發 |
PointerWheelChanged |
發生於指標滾輪的差異值變更時。 |
PreviewKeyDown |
發生於 UIElement 有焦點時按下鍵盤按鍵時。 |
PreviewKeyUp |
發生於 UIElement 有焦點時放開鍵盤按鍵時。 |
ProcessKeyboardAccelerators |
發生於按下 鍵盤快捷方式 (或快捷鍵) 時。 |
RightTapped |
發生於指標位於元素上方時發生右點選輸入壓力時。 |
Tapped |
發生於此元素的點擊測試區域上發生未處理的 Tap 互動時。 |
適用於
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應