Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。755件1アプリケーションの設定をXAMLで書き出そうと、以下のようなコードを書きました。いう要素が入ってしまいます。使えば、期待通りになることがわかりました。(あるいは別の型)を使う慣習があるのではと思った次第です。格納するつもりでいました。票3慣習というよりはList<T>には読み取り専用ではないCapacityプロパティがあり、これをシリアライズするためにコレクション要素が省略されないということだと思います。XAML出力時の動作について追記まずXamlServices.Saveの実装について説明しますが、内部的にはXamlReaderやXamlWriterの派生クラスを使用して以下のように処理されています。writer.WriteNode(reader);つまりXAMLの入出力はXamlReaderでインスタンスやXMLからXAMLオブジェクトグラフを読み取るXamlReaderに設定されているXAMLオブジェクトのノードを1個ずつXamlWriterに追記するXamlWriterはファイルやオブジェクトに書き込まれた結果を出力するという仕組みになっています。XamlObjectReaderを使用すれば問題のインスタンスがどう認識されているか理解することができます。以下のようなコードです。}}これを実行するとプロパティがCollection<T>になっている場合は以下のようなNodeTypeが出力されます。問題のSettings.Itemsに対してはGetObjectが指定されていることが分かります。EndMemberEndObject一方、List<T>を使用した場合やCollection<T>派生型に適当なプロパティを増やした場合、GetObjectの部分は以下のようにStartObjectに変わり、プロパティの代入が指示されます。{clr-namespace:System.Collections.Generic;assembly=mscorlib}List({clr-namespace:...}Item)このようにXamlServices.Saveによる出力結果の違いは内部で使われているXamlReaderの動作に由来しています。ドキュメントにはXamlObjectReader派生型とだけあり、具体的にどのような仕様かは明示されていませんが、TypeConverterはプロパティをXML属性として出力するかどうかだけに使用されているように思われます。個の銅バッジなるほど...確かに派生クラスでCapacityを隠蔽してみると省略されますね。List<Item>();ご所望の出力が得られるようです。「publicなsetterがある場合には、データ型に定義されたconverterの動作を優先する」と言う状態に見えるのですが、確定的に記述したドキュメントは見つかりませんでした。...と思ったのですが、「派生クラスでCapacityを隠蔽」した時の動作から考えるとちょっと違うようですね。個の銅バッジすみません、RootとSettingsは記載ミスです。setterが非公開だとコレクションのインスタンスを設定できないのでしょうね(Addはできる)。今回の場合このプロパティのsetterが公開されている必要もないので、この方法は参考になりました。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。2つ以上のXAMLでデータを共通で使いたい。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。