XamlLight 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供基類,用來建立使用 CompositionLight 將光源效果套用至 XAML 元素和筆刷的 XAML 光源。
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 262144)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class XamlLight : DependencyObject
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 262144)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public class XamlLight : DependencyObject
Public Class XamlLight
Inherits DependencyObject
- 繼承
- 屬性
Windows 需求
裝置系列 |
Windows 10 Creators Update (已於 10.0.15063.0 引進)
|
API contract |
Windows.Foundation.UniversalApiContract (已於 v4.0 引進)
|
範例
請參閱 光源中的程式碼範例。
備註
您可以使用 XamlLight 來建立自訂光線。
例如,它可以用來建立光線,以將組合 SpotLight 套用至目標元素以將其亮起。
XamlLight 提供以 UIElement 或 XAML Brushes 為目標的方法、將光線套用至 UIElements 的樹狀結構,以及根據目前是否正在使用 CompositionLight 資源的存留期來協助管理 CompositionLight 資源的存留期。
自訂 XamlLights 可以與衍生自 XamlCompositionBrushBase 的自訂 Brushes 搭配使用,使用 SceneLightingEffect 控制 XamlLight 所光線時元素的反射屬性。
目標物件
如果您將目標設為具有 XamlLight 的Brush,則使用該 Brush 之任何 UIElement 的各部分都會透過光源亮起。
如果您將目標設為具有 XamlLight 的UIElement,則整個 UIElement 和其子 UIElement 都會透過光源亮起。
您可以在 XamlLight 實例上呼叫方法來新增和移除目標。 XamlLights 也可以定義 自訂附加屬性 ,以新增和移除標記中的目標。
管理資源
建立 XamlLight 時,通常會延遲建立 CompositionLight 和任何相關資源,直到使用光線為止。 當 XamlLight 第一次用來以螢幕上的專案或筆刷為目標時,就會呼叫 OnConnected 方法,因此您可以覆寫 OnConnected ,只在需要資源時安全地建立資源。
當組合資源不再使用時,也是一個很好的做法。 當 XamlLight 實例不再使用在螢幕上的任何位置時,就會呼叫 OnDisconnected 方法,因此您可以覆寫 OnDisconnected 以安全地處置資源。 如果在中斷連線之後再次使用 XamlLight,則會再次呼叫 OnConnected 。
警告
在 Windows 10 Creators Update (SDK 15063) 上,呼叫 Dispose 之後就無法存取 CompositionLight,因此在呼叫 Dispose 之後將它設定為null會導致錯誤。 若要解決此問題,您可以將 CompositionLight 儲存到暫存變數,並在將 CompositionLight 設定為 null 之後,在該變數上呼叫 Dispose。 var temp = CompostionLight; CompositionLight = null; temp.Dispose();
此問題已在較新版本的 SDK 中修正。 如需如何以不同 SDK 版本為目標的詳細資訊,請參閱 版本調適型應用程式 。
建構函式
XamlLight() |
初始化 XamlLight 類別的新實例。 |
屬性
CompositionLight |
取得或設定用於套用光源效果 的 CompositionLight 實例。 |
Dispatcher |
取得這個 物件相關聯的 CoreDispatcher 。 CoreDispatcher代表可在 UI 執行緒上存取DependencyObject的功能,即使程式碼是由非 UI 執行緒起始也一樣。 (繼承來源 DependencyObject) |