【发布时间】:2014-03-12 18:24:57
【问题描述】:
虽然我已经使用 C# 多年,但我必须承认我是 WPF + Infragistics 控件的新手。如果您有任何见解,我很想听听您对以下场景的看法:
- 使用 XAML 为 XamGrid 配置 PersistenceManager。 (参见:[B] 坚持一切)
- 应用程序启动(第一次)
- XamGrid 已绑定到数据源
- 绑定包括一个转换器(请参阅:[A] 列绑定)
- 转换器按预期工作
- 用户调整
Id列的大小 - 数据通过以下方式序列化:
PersistenceManager.Save(IgPersistenceGroup); - 应用程序关闭
- 应用程序已启动(第二次)
-
XamGrid通过以下方式反序列化:PersistenceManager.Load(IgPersistenceGroup, _persistedData.IgPersistenceMemoryStream); -
XamGrid绑定到数据源 - 新数据按预期显示
- 转换器的构造函数永远不会被调用,因此会显示错误的数据
-
Id列是预期大小
在这种特殊情况下,XamGrid 的整个对象树正在被序列化/反序列化。因此,我怀疑我的问题与:
- 正在序列化/反序列化的绑定,或者
- 转换器被引用为
StaticResource,并且当应用程序第二次启动时该引用不再有意义
所以我的问题是:当 XamGrid 被反序列化时,为什么 IValueConverter 不加载?
实际上,没有必要序列化整个XamGrid...,但这是一个完全独立的问题。
附加上下文
- Infragistics 控制版本 12.1.20121.2286
示例代码
[A] 列绑定
<ig:TemplateColumn Key="Severity" HeaderText="Event Severity">
<ig:TemplateColumn.ItemTemplate>
<DataTemplate x:Name="SeverityColumn">
<Image HorizontalAlignment="Center" Width="16" Height="16" Source="{Binding Converter={StaticResource SourceToTargetConverter}}" />
</DataTemplate>
</ig:TemplateColumn.ItemTemplate>
</ig:TemplateColumn>
** SourceToTargetConverter:不是转换器的真实姓名-转换器的名称在这里无关紧要
[B] 坚持一切
<ig:XamGrid ig:PersistenceManager.PersistenceGroup="{DynamicResource igPG}"
<ig:PersistenceManager.Settings>
<ig:PersistenceSettings SavePersistenceOptions="AllButIgnored" >
<ig:PersistenceSettings.PropertySettings>
<ig:PropertyNamePersistenceInfo PropertyName="FilteringSettings"/>
</ig:PersistenceSettings.PropertySettings>
</ig:PersistenceSettings>
</ig:PersistenceManager.Settings>
参考文献
【问题讨论】:
标签: c# wpf xaml data-binding infragistics