FrameworkElement.AddLogicalChild(Object) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
指定したオブジェクトをこの要素の論理ツリーに追加します。
protected public:
void AddLogicalChild(System::Object ^ child);
protected internal void AddLogicalChild (object child);
member this.AddLogicalChild : obj -> unit
Protected Friend Sub AddLogicalChild (child As Object)
パラメーター
- child
- Object
追加される子要素。
例
次の例では、 Child
独自のビジュアル レイヤーの実装を行うカスタム FrameworkElement にプロパティを実装します。 プロパティ セッターは、値が変更されると、古い値が論理ツリーおよびクラス固有のビジュアル コレクションから削除されるように設計されています。 プロパティ値がキャッシュされ、新しい値が論理ツリーとカスタム ビジュアル コレクションの両方に追加されます。
public virtual UIElement Child
{
get
{
return _child;
}
set
{
if (_child != value)
{
//need to remove old element from logical tree
if (_child != null)
{
OnDetachChild(_child);
RemoveLogicalChild(_child);
}
_vc.Clear();
if (value != null)
{
//add to visual
_vc.Add(value);
//add to logical
AddLogicalChild(value);
}
//always add the overlay child back into the visual tree if its set
if (_overlayVisual != null)
_vc.Add(_overlayVisual);
//cache the new child
_child = value;
//notify derived types of the new child
if (value != null)
OnAttachChild(_child);
InvalidateMeasure();
}
}
}
<System.ComponentModel.DefaultValue(GetType(Object), Nothing)>
Public Overridable Property Child() As UIElement
Get
Return _child
End Get
Set(ByVal value As UIElement)
If _child IsNot value Then
'need to remove old element from logical tree
If _child IsNot Nothing Then
OnDetachChild(_child)
RemoveLogicalChild(_child)
End If
_vc.Clear()
If value IsNot Nothing Then
'add to visual
_vc.Add(value)
'add to logical
AddLogicalChild(value)
End If
'always add the overlay child back into the visual tree if its set
If _overlayVisual IsNot Nothing Then
_vc.Add(_overlayVisual)
End If
'cache the new child
_child = value
'notify derived types of the new child
If value IsNot Nothing Then
OnAttachChild(_child)
End If
InvalidateMeasure()
End If
End Set
End Property
注釈
このメソッドは、要素の論理子要素を表すオブジェクトに対するコレクションの実装に使用します。 子要素コレクションのコレクションメンテナンスは、プロパティゲッターまたはセッター、Changed イベント、コンストラクター、またはコレクション型自体のクラス処理で行うことができます。
コントロール作成者の場合、使用できる基本コントロール クラスのコンテンツ モデルがコントロール シナリオに適していない場合を除き、このレベルで論理ツリーを操作することは推奨されません。 のItemsControlレベルContentControlでサブクラス化することを検討してくださいHeaderedItemsControl。 これらのクラスは、専用 API を介した論理ツリー子要素の特定の適用を含むコンテンツ モデルと、テンプレートを使用したスタイル設定など、WPF コントロールで一般的に望ましいその他の機能のサポートを提供します。 使用方法 LogicalChildren と AddLogicalChild方法の詳細については、「 WPF のツリー」を参照してください。
AddLogicalChild は、論理ツリーが別のプロセスによって反復処理されているときに呼び出された場合に例外をスローする可能性があります。