うまくいけば、簡単な質問です。別のカスタム コントロールのリストを含む依存関係プロパティを持つカスタム コントロールがあります。
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` をシリアル化できません」というメッセージが表示されることです。これが通常のクラスである場合、属性を使用してシリアル化する方法を記述できますが (そうですか?)、これは静的な依存関係プロパティなので、これをシリアル化するにはどうすればよいですか?