コントロールの作成とリサイクルに使用される単純なリサイクル コントロール ファクトリを作成しました。考え方は単純です: ファクトリは Func 関数をコンストラクターのパラメーターとして受け取ります。また、リサイクル用の FrameworkElements の内部スタックもあります。ファクトリの GetControl メソッドは明らかな方法で実装されています。スタックにコントロールがある場合は、それを返します。それ以外の場合は、新しいコントロールを作成します。
単純な状況をイメージします。私のコントロールはただ
<Border BorderBrush="Black" BorderThickness="5" Width="100" Height="30"
Background="{Binding RelativeSource={RelativeSource AncestorType=StackPanel},
Path=Background}" />
背景が異なる 2 つの StackPanels があります。1 つ目は赤、2 つ目は緑です。最初のスタックパネルに (ファクトリを使用して) 新しいコントロールを追加します。赤い背景があります。2 番目のスタックパネルにコントロールを追加します。緑の背景があります。次に、最初のスタックパネルからコントロールを削除します。リサイクルされています。コントロールを 2 番目の StackPanel に追加します。でも背景が赤い!RelativeSource トリガーが更新されていないようです。
状況を処理する方法はありますか?