Wpf 为什么UserControl会导致序列化错误?
我的MainWindow.xaml中有以下组合框:Wpf 为什么UserControl会导致序列化错误?,wpf,xaml,serialization,user-controls,Wpf,Xaml,Serialization,User Controls,我的MainWindow.xaml中有以下组合框: <ComboBox ItemsSource="{Binding ComboItemsProperty}" /> 在MainWindow.xaml.cs中: ObservableCollection<string> ComboItemsField = new ObservableCollection<string>(); public ObservableCollection<string
<ComboBox ItemsSource="{Binding ComboItemsProperty}" />
在MainWindow.xaml.cs中:
ObservableCollection<string> ComboItemsField =
new ObservableCollection<string>();
public ObservableCollection<string> ComboItemsProperty
{
get { return ComboItemsField; }
set { ComboItemsField = value; }
}
ObservableCollection组合项字段=
新的可观察集合();
公共可见集合组合项属性
{
获取{return ComboItemsField;}
设置{ComboItemsField=value;}
}
这很好用!我可以向属性添加项并成功序列化ComboBox元素
我的问题是,为什么当我在UserControl.xaml和UserControl.xaml.cs中有这段代码时,我在尝试序列化控件时会出现以下错误:
无法序列化泛型类型
'System.Collections.ObjectModel.ObservaleCollection'1[System.String]'
有什么想法吗?您没有说如何“成功序列化(序列化)ComboBox元素”,但错误是UserControls的预期行为
XamlWriter
(我假设您正在使用)无法序列化绑定,这意味着它将尝试序列化绑定的实际值。由于有泛型集合绑定,它会失败,因为XamlWriter
无法序列化泛型
您有两个选择:
告诉XamlWriter
您不想序列化属性:
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public ObservableCollection<string> ComboItemsProperty
{
get { return ComboItemsField; }
set { ComboItemsField = value; }
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
公共可见集合组合项属性
{
获取{return ComboItemsField;}
设置{ComboItemsField=value;}
}
或者,如果确实需要绑定项,则通过创建从泛型派生的自己的具体类来消除泛型问题。有关详细信息,请参阅。谢谢您提供的信息。我正在使用XamlWriter进行序列化。还有一件事。您说XamlWrite无法序列化绑定,但是它成功地序列化了Mainwindow.xaml和Mainwindow.xaml.cs中的绑定。对吗?我不知道它是怎么做到的。你的套餐有什么XAML?你说得对。它不会序列化绑定。我应该说得更清楚些。我希望它序列化集合中的值。你的回答帮助我做到了这一点。非常感谢。