我有我的班级:
public class CustomCell
{
public string BindingData
{
get { return (string)GetValue(BindingDataProperty); }
set { SetValue(BindingDataProperty, value); }
}
public static readonly DependencyProperty BindingDataProperty =
DependencyProperty.Register("BindingData", typeof(string), typeof(CustomCell));
}
我使用BindingDataProperty设置绑定
CustomCell cell = new CustomCell();
cell.SetBinding(CustomCell.BindingDataProperty, new Binding("source"));
现在我想使用XamlWriter
获取XAML等效字符串:
string xaml = XamlWriter.Save(cell);
但在xaml
字符串BindingData
中{x:Null}
并且没有任何约束。
为什么呢?我该如何解决这个问题?
答案 0 :(得分:1)
这是Serialization Limitation of XamlWriter.Save
请参阅MSDN文档:
各种标记扩展格式对象的公共引用, 例如StaticResource或 Binding ,将被取消引用 序列化过程。这些已经在当时被取消引用 内存中的对象是由应用程序运行时创建的 保存逻辑不会重新访问原始XAML以恢复此类 对序列化输出的引用。这可能冻结任何 数据绑定或资源获取的值是最后使用的值 运行时表示,只有有限或间接的能力 区分这样的值与本地设置的任何其他值。图像是 也被序列化为对象的对象引用,因为它们存在于 项目,而不是原始的来源参考,失去了什么 文件名或URI最初被引用。甚至宣布资源 在同一页面内看到序列化到它们的位置 被引用,而不是被保存为资源的关键字 集合。