自定义回收控制工厂和RelativeSource触发器

时间:2013-10-24 12:58:28

标签: c# wpf silverlight

我写了一个简单的回收控制工厂,用于创建和回收控件。这个想法很简单:工厂将Func函数作为构造函数中的参数。它还有一个用于回收的内部StackElements堆栈。工厂的GetControl方法以明显的方式实现:如果堆栈中有控件,则返回它。在另一种情况下,创建一个新控件。

成像一个简单的情况。我的控制权只是

<Border BorderBrush="Black" BorderThickness="5" Width="100" Height="30"
        Background="{Binding RelativeSource={RelativeSource AncestorType=StackPanel},
                             Path=Background}" />

有两个不同背景的StackPanel:第一个是红色,第二个是绿色。我将一个新控件(使用工厂)添加到第一个stackpanel。它有一个红色背景。 我将控件添加到第二个stackpanel。它有一个绿色的背景。 然后我从第一个堆栈面板中删除控件。它被回收了。我将控件添加到第二个StackPanel。但它有红色背景!看来RelativeSource触发器没有更新。

有办法处理这种情况吗?

0 个答案:

没有答案