我最近使用WPF。我對C#和WPF很新穎。我與一些孩子構建了動態邊界。我想從這個邊框(動態和與孩子)的副本,並只改變一些屬性。似乎只有一個默認和沒有複製構造函數MSDN Border。C#WPF,從WPF節點和所有子節點動態深入複製
我找到了相關答案:How Can you Clone a Wpf Object。
有沒有辦法避免複製XAML?
我的問題:是否有一個inbuild函數從WPF邊框構造深層副本。爲什麼沒有複製構造函數?
謝謝你的時間。
我最近使用WPF。我對C#和WPF很新穎。我與一些孩子構建了動態邊界。我想從這個邊框(動態和與孩子)的副本,並只改變一些屬性。似乎只有一個默認和沒有複製構造函數MSDN Border。C#WPF,從WPF節點和所有子節點動態深入複製
我找到了相關答案:How Can you Clone a Wpf Object。
有沒有辦法避免複製XAML?
我的問題:是否有一個inbuild函數從WPF邊框構造深層副本。爲什麼沒有複製構造函數?
謝謝你的時間。
我想給出兩個小「爲什麼不」的例子。
考慮以下XAML片段:
<DockPanel LastChildFill="False">
<TextBlock DockPanel.Dock="Right" Text="Test"/>
</DockPanel>
的依賴屬性LastChildFill
和Text
是比較容易的,因爲它們在某種程度上屬於自己的對象。
但是,DockPanel.Dock
是一個附加屬性,所以它附加到的DependencyObject
可能不知道它的存在。任意附加屬性可以附加到任意依賴對象。該屬性不屬於該對象,但在副本上忽略它會導致生成的佈局發生更改。
第二個例子:
<Border>
<ContentPresenter Content="{Binding SomeObject}"/>
</Border>
有可能是對的SomeObject
類型一個DataTemplate,所以結果的可視化樹將被建造,但SomeObject
本身不是一個WPF特定的對象,所以你有什麼語義期望獲取邊界節點的深層副本?
通常你可能要更具體一些,你是否想深複製邏輯樹或可視化樹。你的問題傾向於邏輯樹,但我懷疑你更喜歡複製佈局的視覺表現。有關此事的更多詳情,請諮詢您最喜愛的搜索引擎。以下是兩個隨機點:MSDN on WPF Trees和WPF tutorial on logical and visual tree。
考慮將其設爲用戶控件並使用動態位的依賴項屬性。 –
所以基本上,你想深度拷貝一個包含所有子節點的整個任意WPF節點?因爲那是你的邊界可以包含的內容。你可能會更好,從你的問題中刪除邊界,因爲標題看起來很具體,而解決方案需要是通用的。 – grek40
@ grek40你是對的。我改變了標題。謝謝 – Mehno