我的WPF窗口中有几个控件。我将窗口分为4个部分。如果我点击左上角的部分,我想在另一个窗口弹出窗口中复制此部分的内容。 我要复制的是一个可以包含许多不同控件的网格,例如:togglebutton,button,panel ...派生自ItemsControl,Control ...以及DependencyProperty,ObservableCollection等。
我试过了:
但我总是有这些错误:
- 无法序列化泛型类型'System.Collections.ObjectModel.ObservableCollection`1或
- 解析签名时抛出了BadImageFormatException。这可能是由于缺乏通用上下文。确保 提供了genericTypeArguments和genericMethodArguments 包含足够的背景。
答案 0 :(得分:1)
你不应该克隆XAML本身,这是一种残酷而错误的方式。
请查看下面可能的MVVM解决方案。假设单个DataGird代表单个业务项,因此您需要遵循:
ObservableCollection<Item> Items { get; set; }
)ICommand CopyItem
并且在命令处理程序中实际上仅复制Item业务实体的实例并将其添加到Items
列表,WPF通过绑定反映此更改并且UI将由新的更新带有DataGrid的ListViewItem,表示刚刚复制的Item 有用的链接: