0
我試圖序列化一個自定義的WPF用戶控件,該控件的特徵是具有綁定到名爲「Frequency」的依賴項屬性的文本塊的網格。定義文本塊是如下的片斷(用戶控制的定義是相當長它張貼在這裏!):如何在將WPF用戶控件序列化到XElement時保持綁定
<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;
我遇到的問題是,序列化文本塊時,「文本」字段不保留的結合,「頻率」依賴屬性,
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"
我的問題是:有沒有什麼辦法能夠序列化依賴項屬性的綁定的實際價值,而不是它只是獲取與(在下面的例子中「131.5」)由用戶指定的值導出?
在此先感謝!