私はこのようなList<SomethingWrapper>
インスタンスにDataGrid
を結合することによってタイプSomething
のオブジェクトのいくつかのプロパティを表示するために私Compact Frameworkの3.5ウィンドウモバイルプロフェッショナル6 SDKベースのプロジェクトでSystem.Windows.Forms.DataGrid
コントロールを使用しようとしている:DataSetではなくList <T>にバインドされたDataGridの列のサイズを変更するにはどうすればよいですか?
public class SomethingWrapper {
private Something data;
public SomethingWrapper(Something data) { this.data = data; }
public string Column1 { get { /* string from this.data */ } }
public string Column2 { get { /* string from this.data */ } }
}
public class SomethingList : List<SomethingWrapper> {
public SomethingList(IEnumerable<Something> items) {
foreach (var item in items) Add(new SomethingWrapper(item));
Sort((a, b) => a.Column2.CompareTo(b.Column2);
}
}
/* ... */
IEnumerable<Something> dataToShow = /* assume this is filled correctly */
SomethingDataGrid.DataSource = new SomethingList(dataToShow);
これはうまくいくようです:正しいデータは、Column1
とColumn2
という2つの列のグリッドに表示され、2番目の列でソートされます。私はこれをこのデータの読み込み専用のビューにしたいので、すべてうまくいきます。
しかし、私は列の幅を設定したいと思い、これが動作するように見えることはできません...
は明白なことを試みた:、TableStyle
を作成し、列ごとにテキストボックスの列スタイルのインスタンスを作成し、それを追加しますTableStyle
に設定し、結果の表スタイルにSomethingDataGrid.TableStyle
を設定します。 (これはメモリからのものであり、私が使用しているコードも表示しています。必要ならば、後日、質問に追加することができます)。
しかし何も変わりません。私はこれがTableStyle
オブジェクトのMappingName
と関係があると考えています。私が昨日の夕方に見つけることができるすべての例は、をDataGrid
にデータバインドし、をDataSet
の正しい表名に設定するためのものです。さもなければ、テーブルスタイルはあなたが期待していることをしません。これは私が見ている動作です。
質問:私の問題の解決のために正しい場所を探していますか?もしそうなら、にバインドするときにTableStyle.MappingName
を設定して、T
...のプロパティを表示する必要がありますか?
(。。重複の可能性をチェックしようとしましたが、私はそこに間違っていることが判明した場合、私を修正してください正確に一致して見つけることができませんでした)
TableStyle.MappingName = BindingSource.GetListName(null)を使用すると正常に動作することがわかりました。 – peSHIr