2011-10-26 4 views
1

私はExcelファイル(.xls)からテーブルを読み込み、それをDataGridに表示しようとしています。表には未知の次元があり、各列には1つの未知の型(文字列、倍精度または整数)の値があります。ExpandoObjectsのコレクションをデータグリッドにバインドする方法は?

私はCOM経由でファイルにアクセスし、テーブルをExpandoObjectsのList <>に入れます。 DataGrid.ItemSourceをListに設定すると、グリッドは視覚的に空のままです。 明示的に列とそのデータバインディングを定義すると、アプリケーションがExpandoObjects内の指定されたプロパティを見つけることができないというランタイムメッセージが生成されます。

テーブルをGridViewに表示するにはどうすればよいですか?私はSilverlight 5 RCで作業し、簡単な方法で作業したいと考えていました。少なくともSilverlight 2と3で見たソリューションよりも単純です。

+0

Vladimir Bodurovは、匿名型のオブジェクトのプロパティに各ディクショナリキーを変換することによって、IDictionaryのIEnumerableからSilverlight DataGridをバインドする方法についての記事(http://blog.bodurov.com/How-to-バインド - Silverlight - DataGrid-IEnumerable-of-IDictionary)。しかし、彼のソリューションは非常に大きく、Silverlight 1のためです。 – himmelsfisch

答えて

0

を記述する必要があるということです。 ExpandoObjectsをDictionariesに置き換え、Bodurovのクラスを使用してListをDataGridが処理できるものに変換しました。

0

動的で、ICustomTypeProviderが実装されていない場合、Silverlight 5ではバインドされません。 WPFでダイナミックなデータバインディングができ、プロパティが(Expandoのように)知ることができる場合は、IDynamicMetaObjectプロバイダで動作するCustomTypeを記述することも難しくありません。 Expandoのために、特に封印されているからです。

だから、一番下の行は、あなたが、私は私のために罰金ウラジーミル・ボドゥロフのsolution作品を実現し、独自のdynamic type implementing ICustomTypeProvider

関連する問題