【发布时间】:2017-07-03 17:49:13
【问题描述】:
我创建了一个类,它声明了一个附加属性,该属性将包含一个数据模板集合:
public class DynamicTemplatesList : DependencyObject
{
public static readonly DependencyProperty TemplatesProperty =
DependencyProperty.RegisterAttached("Templates", typeof(TemplateCollection), typeof(DynamicTemplatesList), new FrameworkPropertyMetadata(new TemplateCollection(),
FrameworkPropertyMetadataOptions.None));
public static void SetTemplates(UIElement element, TemplateCollection collection)
{
element.SetValue(TemplatesProperty, collection);
}
}
然后在 xaml 中设置集合:
<gfc:DynamicTemplatesList.Templates>
<gfc:Template Key="{StaticResource CheckBoxFieldType}"
DataTemplate="{StaticResource CheckBoxTemplate}" />
<gfc:Template Key="{StaticResource LookupEditFieldType}"
DataTemplate="{StaticResource LookupEditTemplate}" />
<gfc:Template Key="{StaticResource TextBoxFieldType}"
DataTemplate="{StaticResource TextBoxTemplate}" />
<gfc:Template Key="{StaticResource DateEditFieldType}"
DataTemplate="{StaticResource DateEditTemplate}" />
</gfc:DynamicTemplatesList.Templates>
这似乎第一次运行良好。但是我注意到的一件事是,当我关闭具有此依赖项属性的窗口然后再次重新打开它时, 似乎模板再次添加到集合中。
第一次,集合中有 4 个模板,第二次 8 个,以此类推。谁能向我解释这里发生了什么?
我怀疑这是因为依赖属性的静态特性导致值被重复,如果是这种情况,任何人都可以指出一个解决方案来防止附加的集合属性添加重复项吗?
【问题讨论】:
标签: c# wpf xaml dependency-properties