绑定未使用XamlWriter设置

时间:2012-10-10 19:40:50

标签: c# wpf xaml binding

我有我的班级:

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}并且没有任何约束。

为什么呢?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

这是Serialization Limitation of XamlWriter.Save

请参阅MSDN文档:

  

各种标记扩展格式对象的公共引用,   例如StaticResource或 Binding ,将被取消引用   序列化过程。这些已经在当时被取消引用   内存中的对象是由应用程序运行时创建的   保存逻辑不会重新访问原始XAML以恢复此类   对序列化输出的引用。这可能冻结任何   数据绑定或资源获取的值是最后使用的值   运行时表示,只有有限或间接的能力   区分这样的值与本地设置的任何其他值。图像是   也被序列化为对象的对象引用,因为它们存在于   项目,而不是原始的来源参考,失去了什么   文件名或URI最初被引用。甚至宣布资源   在同一页面内看到序列化到它们的位置   被引用,而不是被保存为资源的关键字   集合。