作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
希望是一个简单的问题。我有一个自定义控件,其依赖属性包含另一个自定义控件的列表。
public static readonly DependencyProperty BlockObjectsProperty = DependencyProperty.Register("BlockObjects", typeof(FreezableCollection<BlockObject>), typeof(Block), new FrameworkPropertyMetadata(new FreezableCollection<BlockObject>(), null));
public FreezableCollection<BlockObject> BlockObjects
{
get { return (FreezableCollection<BlockObject>)base.GetValue(BlockObjectsProperty); }
set { base.SetValue(BlockObjectsProperty, value); }
}
然后在 xaml 中使用它来填充控件
<Viewbox Grid.Row="2" Stretch="Uniform">
<ItemsControl x:Name="tStack" ItemsSource="{TemplateBinding BlockObjects}" ContextMenu="{StaticResource BodyContextMenuKey}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical" VerticalAlignment="Stretch" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</Viewbox>
我现在的问题是我想将它序列化到一个文件中,但是在使用 XamlWriter.Save 时我得到“无法序列化泛型类型“System.Windows.FreezableCollection”。如果这是一个普通的类,我可以使用属性来描述它应该被序列化的方式(对吗?)但它是一个静态依赖属性,那么我如何让它序列化呢?
最佳答案
好吧,愚蠢的我,网上有很多关于这方面的信息,简单的解决方案是采用泛型 freezablecollection 并派生一个非泛型类,如下所示。
public class BlockObjectCollection : FreezableCollection<BlockObject>
{
}
然后替换依赖属性
public static readonly DependencyProperty BlockObjectsProperty = DependencyProperty.Register("BlockObjects", typeof(BlockObjectCollection), typeof(Block), new FrameworkPropertyMetadata(new BlockObjectCollection(), null));
public BlockObjectCollection BlockObjects
{
get { return (BlockObjectCollection)base.GetValue(BlockObjectsProperty); }
set { base.SetValue(BlockObjectsProperty, value); }
}
关于wpf - 无法序列化泛型类型 'System.Windows.FreezableCollection`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11538761/
我有一个 FreezableCollection,我想监视其子属性的更改。这是代码的一个小节: public class FieldHeading : DependencyObject { p
希望是一个简单的问题。我有一个自定义控件,其依赖属性包含另一个自定义控件的列表。 public static readonly DependencyProperty BlockObjectsPrope
我想做的是 FreezableCollection.AddRange(collectionToAdd) 每次我添加到 FreezableCollection 时都会引发一个事件并发生一些事情。现在我有
我是一名优秀的程序员,十分优秀!