言語

XamlLight クラス

定義

CompositionLight を使用して XAML 要素とブラシに照明効果を適用する XAML ライトを作成するために使用する基本クラスを提供します。

/// [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 XamlLight : DependencyObject
[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 XamlLight : DependencyObject
Public Class XamlLight
Inherits DependencyObject
継承
Object IInspectable DependencyObject XamlLight
属性

「照明」のコード例を参照してください。

注釈

XamlLight を使用して、カスタム ライトを作成できます。

たとえば、合成 SpotLight をターゲット要素に適用してライトを適用するライトを作成するために使用できます。

XamlLight には、UIElements または XAML ブラシをターゲットにしたり、UIElements のツリーにライトを適用したり、現在使用中かどうかに基づいて CompositionLight リソースの有効期間を管理したりするためのメソッドが用意されています。

カスタム XamlLights は、 XamlCompositionBrushBase から派生したカスタム ブラシと組み合わせて使用できます。このブラシは 、XamlLight で照らされたときに、SceneLightingEffect を 使用して要素の反射プロパティを制御します。

ターゲット オブジェクト

XamlLight でブラシをターゲットにすると、その ブラシ を使用する UIElements の部分がライトによって照らされます。

XamlLight で UIElement を対象とする場合は、UIElement 全体とその子 UIElement がすべてライトによって照らされます。

ターゲットは、XamlLight インスタンスでメソッドを呼び出すことによって追加および削除できます。 XamlLights では、 カスタム添付プロパティ を定義して、マークアップからターゲットを追加および削除することもできます。

リソースの管理

XamlLight を作成するときは、通常、ライトが使用されるまで CompositionLight と関連リソースの作成を遅らせるのが良い方法です。 OnConnected メソッドは、XamlLight が最初に画面上の要素またはブラシのターゲットに使用されるときに呼び出されるため、OnConnected をオーバーライドして、必要なときにのみリソースを安全に作成できます。

また、コンポジション リソースが使用されなくなったら破棄することをお勧めします。 OnDisconnected メソッドは、XamlLight インスタンスが画面上のどこにも使用されなくなったときに呼び出されるため、OnDisconnected をオーバーライドしてリソースを安全に破棄できます。 切断された後で XamlLight が再び使用された場合は、 OnConnected が再び呼び出されます。

Warning

Windows 10 Creators Update (SDK 15063) では、Dispose を呼び出した後に CompositionLight にアクセスできないため、Dispose を呼び出した後に null に設定するとエラーが発生します。 この問題を回避するには、CompositionLight を一時変数に保存し、CompositionLight を null に設定した後で Dispose を呼び出します。 var temp = CompositionLight; CompositionLight = null; temp.Dispose(); この問題は、新しいバージョンの SDK で修正されています。 さまざまな SDK バージョンをターゲットにする方法については、 バージョン アダプティブ アプリ に関するページを参照してください。

コンストラクター

名前 説明
XamlLight()

XamlLight クラスの新しいインスタンスを初期化します。

プロパティ

名前 説明
CompositionLight

照明効果の適用に使用する CompositionLight インスタンスを取得または設定します。

Dispatcher

Windows アプリ SDK アプリで常に null を返します。 代わりに DispatcherQueue を使用してください。

(継承元 DependencyObject)
DispatcherQueue

このオブジェクトが関連付けられている DispatcherQueue を取得します。 DispatcherQueueは、コードが非 UI スレッドによって開始された場合でも、UI スレッド上のDependencyObjectにアクセスできる機能を表します。

(継承元 DependencyObject)

メソッド

名前 説明
AddTargetBrush(String, Brush)

XamlLight のターゲットとしてブラシを設定します

AddTargetElement(String, UIElement)

XAMLLight のターゲットとして UIElement を設定します。

ClearValue(DependencyProperty)

依存関係プロパティのローカル値をクリアします。

(継承元 DependencyObject)
GetAnimationBaseValue(DependencyProperty)

依存関係プロパティに対して確立された基本値を返します。これは、アニメーションがアクティブでない場合に適用されます。

(継承元 DependencyObject)
GetId()

カスタム XamlLight 型の識別子を返します。

ほとんどの場合、競合を防ぐために一意の識別子を使用する必要があります。 たとえば、カスタム XamlLight 型の FullName を使用できます。

識別子は、ブラシと UIElements を特定のライト型のターゲットとして追加および削除するために使用されます。

GetValue(DependencyProperty)

DependencyObject から依存関係プロパティの現在の有効な値を返します。

(継承元 DependencyObject)
OnConnected(UIElement)

このメソッドは、XamlLight が画面上で最初に使用されている場合、または以前に切断された後に再び使用されたときに自動的に呼び出されます。

これにより、必要な場合にのみ CompositionLight などのリソースを作成できます。

OnDisconnected は、XAMLLight が UIElements またはブラシのライトに使用されなくなったときに呼び出されます。

OnDisconnected(UIElement)

このメソッドは、XamlLight が画面上のどこにも使用されなくなったときに自動的に呼び出されます。

これにより、現在必要ない場合に CompositionLight などのリソースを安全に破棄できます。

切断後に XamlLight を使用して UIElements またはブラシを点灯させる場合は、OnConnected が再び呼び出されます。

ReadLocalValue(DependencyProperty)

ローカル値が設定されている場合は、依存関係プロパティのローカル値を返します。

(継承元 DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

この DependencyObject インスタンスの特定の DependencyProperty への変更をリッスンするための通知関数を登録します。

(継承元 DependencyObject)
RemoveTargetBrush(String, Brush)

ブラシXamlLight のターゲットになるのを停止します。

RemoveTargetElement(String, UIElement)

UIElementXamlLight のターゲットになるのを停止します。

SetValue(DependencyProperty, Object)

DependencyObject の依存関係プロパティのローカル値を設定します。

(継承元 DependencyObject)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

RegisterPropertyChangedCallback を呼び出して以前に登録した変更通知を取り消します。

(継承元 DependencyObject)

適用対象

こちらもご覧ください