XamlLight クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
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
- 継承
- 属性
例
「照明」のコード例を参照してください。
注釈
XamlLight を使用して、カスタム ライトを作成できます。
たとえば、合成 SpotLight をターゲット要素に適用して光を当てるライトを作成するために使用できます。
XamlLight には、ターゲットの UIElement や XAML Brush を指定するメソッド、UIElement のツリーにライトを適用するメソッド、現在使用されているかどうかに基づいて CompositionLight リソースの有効期間を管理するためのメソッドが用意されています。
カスタム XamlLights は、 XamlCompositionBrushBase から派生したカスタム ブラシと組み合わせて使用できます。このブラシは 、SceneLightingEffect を使用して、XamlLight によって照らされるときに要素の反射プロパティを制御します。
オブジェクトのターゲット設定
XamlLight で Brush をターゲットにする場合、その Brush 使用している任意の UIElement の部分がライトによって照らされます。
XamlLight で UIElement をターゲットにする場合、UIElement 全体とその子 UIElement がライトによって照らされます。
ターゲットは、XamlLight インスタンスでメソッドを呼び出すことによって追加および削除できます。 XamlLights では、 カスタム添付プロパティ を定義して、マークアップにターゲットを追加したり、マークアップからターゲットを削除したりすることもできます。
リソースの管理
XamlLight を作成するときは、通常、ライトが使用されるまで CompositionLight と関連リソースの作成を遅らせることが推奨されます。 OnConnected メソッドは、XamlLight を最初に使用して画面上の要素またはブラシをターゲットにするときに呼び出されるため、OnConnected をオーバーライドして、必要なときにのみリソースを安全に作成できます。
また、コンポジション リソースが使用されなくなったら破棄することをお勧めします。 OnDisconnected メソッドは、XamlLight インスタンスが画面上のどこにも使用されなくなったときに呼び出されるため、OnDisconnected をオーバーライドしてリソースを安全に破棄できます。 切断後に XamlLight が後で再度使用される場合 は、OnConnected が再度呼び出されます。
警告
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 アプリで を返します |
DispatcherQueue |
このオブジェクトが |
メソッド
AddTargetBrush(String, Brush) | |
AddTargetElement(String, 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) | |
RemoveTargetElement(String, UIElement) |
UIElement がXamlLight のターゲットになるのを停止します。 |
SetValue(DependencyProperty, Object) |
DependencyObject の依存関係プロパティのローカル値を設定します。 (継承元 DependencyObject) |
UnregisterPropertyChangedCallback(DependencyProperty, Int64) |
RegisterPropertyChangedCallback を呼び出して以前に登録した変更通知を取り消します。 (継承元 DependencyObject) |