我正在尝试序列化一个自定义 WPF 用户控件,该控件具有一个带有绑定到名为“频率”的依赖项属性的文本块的网格。定义文本块的代码片段如下(用户控件的定义很长,贴在这里!):
<TextBlock x:Name="FrequencyText" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2"
FontFamily="Arial Rounded MT"
Foreground="White" FontSize="10" FontWeight="DemiBold" Margin="3"
TextBlock.Text="{Binding Frequency, ElementName=FrequencyButtonControlA, Path=Frequency}"
TextAlignment="Center" VerticalAlignment="Center" HorizontalAlignment="Left" />
我正在开发一个编辑器工具,使用户能够将一些自定义控件排列到画布中并更改它们的属性,我需要为用户提供克隆现有元素的能力。为了做到这一点,我将控件序列化为一个 XElement,然后实例化一个新的。执行序列化的代码如下:
var contentXaml = (commsPanelItem.Content != null) ? XamlWriter.Save(commsPanelItem.Content) : string.Empty;
var serializedItem = new XElement(
"CommsPanelItem",
new XElement("Type", commsPanelItem.GetType().ToString()),
new XElement("Left", Canvas.GetLeft(commsPanelItem.UIElement)),
new XElement("Top", Canvas.GetTop(commsPanelItem.UIElement)),
new XElement("Width", commsPanelItem.Width),
new XElement("Height", commsPanelItem.Height),
new XElement("zIndex", Panel.GetZIndex(commsPanelItem.UIElement)),
new XElement("Content", contentXaml),
commsPanelItem.GetAttributesForSavingPanelInConfigurator() as XElement);
return serializedItem;
我遇到的问题是,在序列化文本块时,“文本”字段不保留与“频率”依赖属性的绑定,它只是使用用户分配的值导出(“131.5”在以下示例):
TextBlock Text="131.5" FontFamily="Arial Rounded MT" FontWeight="SemiBold" FontSize="10" Foreground="#FFFFFFFF" TextAlignment="Center" Name="FrequencyText" Margin="3,3,3,3" HorizontalAlignment="Left" VerticalAlignment="Center" Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="2"
我的问题是:有没有办法能够序列化依赖属性的绑定而不是实际值?
提前致谢!