2011-11-15 11 views
1

私はWPFウィンドウにいくつかのコントロールを持っています。私は窓を4つのセクションに分けました。左上のセクションをクリックすると、別のウィンドウポップアップでこのセクションの内容をコピーしたいと思います。 私がコピーしたいのは、ItemsControl、Control ...、DependencyProperty、ObservableCollectionなどから派生した、多くの異なるコントロールを含むグリッドです:すべての子でWPFグリッドを複製するにはどうすればいいですか?

私は試しました:

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

は、私はいつも、これらのエラーを持っている:

  • は、ジェネリック型「System.Collections.ObjectModel.ObservableCollection`1または署名を解析中
  • A BadImageFormatExceptionがスローされましたをシリアル化することはできません。これは、おそらく一般的なコンテキストがないためです。 genericTypeArgumentsとgenericMethodArgumentsが指定され、十分なコンテキストが含まれている があることを確認してください。
+0

詳細情報を入力してください。いくつかの最小限のソースコード。 –

答えて

1

XAML自体をクローンしないでください。これは残酷で間違った方法です。

下記のMVVMソリューションをご覧ください。のは、単一DataGirdは、単一のビジネスアイテムを表しましょう、あなたは以下が必要:

  • ItemsWindow.xamlは - DataGridのは、アイテムの詳細
  • ItemsViewModelを表しているListViewコントロールとListViewコントロールの1アイテムを表し - リストを公開アイテムのオブジェクト(ObservableCollection<Item> Items { get; set; }
  • ItemsWindow.ListViewの各項目は
  • ItemsViewModelコマンドICommand CopyItem露出
  • ItemDataTemplate等のDataTemplateによって、コマンドHAで表されndler実際にItemビジネスエンティティのインスタンスのみをcopyiingと Itemsリストに追加するには、WPFは、バインディングを経て変化し、UIは、コピーした項目

便利なの詳細を表すデータグリッドで新しいのListViewItemによって更新されますこれを反映してリンク:

  • Commands
  • Data Templating Overview

    • Model View ViewModelパターン - 例
    • とWPFデータテンプレートの短いとクリーンな概要
  • 関連する問題