1

我有我的课:

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"));

现在我想使用以下命令获取 XAML 等效字符串XamlWriter

string xaml = XamlWriter.Save(cell);

但是在xaml字符串BindingData中是{x:Null}并且没有进行任何绑定。

为什么?我怎么解决这个问题?

4

1 回答 1

1

这是XamlWriter.Save 的序列化限制

请参阅 MSDN 文档:

对各种标记扩展格式(例如 StaticResource 或Binding )的对象的通用引用, 将被序列化过程取消引用。在应用程序运行时创建内存对象时,这些已被取消引用,并且保存逻辑不会重新访问原始 XAML 以恢复对序列化输出的此类引用。这可能会将任何数据绑定或资源获得的值冻结为运行时表示最后使用的值,只有有限或间接的能力将此类值与本地设置的任何其他值区分开来。图像也被序列化为项目中存在的图像的对象引用,而不是作为原始源引用,丢失最初引用的任何文件名或 URI。甚至在同一页面中声明的资源也会被序列化到它们被引用的位置,

于 2012-10-10T20:16:28.397 回答