2011-11-15 32 views
1

我在我的WPF窗口中有幾個控件。我把窗口分成了4個部分。如果我點擊左上角的部分,我想在另一個窗口彈出框中複製此部分的內容。 我要複製是可以包含很多不同的控制,前一格:切換按鈕,按鍵,面板......自ItemsControl,控制衍生......與DependencyProperty的,的ObservableCollection等。如何克隆所有孩子的WPF網格?

我試着:

  • XamlWriter.Save(data);
  • XamlServices.Save(data);

,但我一直有這些錯誤:

  • 無法序列化泛型類型「System.Collections.ObjectModel.ObservableCollection`1或在解析簽名
  • 一個BadImageFormatException已經拋出。這可能是由於缺乏一個通用的上下文。確保提供 genericTypeArguments和genericMethodArguments並且 包含足夠的上下文。
+0

請提供更多信息,例如一些簡約的源代碼。 –

回答

1

你不應該克隆XAML本身,這是殘酷和錯誤的方式。

看看下面可能的MVVM解決方案。比方說,單DataGird代表一個商業項目,所以你需要以下:

  • ItemsWindow.xaml - 代表一個ListView和ListView的單個項目DataGrid中表示項目細節
  • ItemsViewModel - 揭露名單項目的對象(ObservableCollection<Item> Items { get; set; }
  • 的ItemsWindow.ListView中的每一個項目是由像ItemDataTemplate一個DataTemplate
  • ItemsViewModel暴露命令ICommand CopyItem和在命令公頃表示ndler實際上copyiing的項目業務實體的唯一實例,並將其添加到Items列表,WPF反映通過綁定這改變和UI將由一個新的ListViewItem有代表

有用剛纔複製項目的細節一個DataGrid更新鏈接: