0

を使用した Visual Studio 2010 (C#) Silverlight 4 プロジェクトで次のような状況が発生しましたDataGrid(これは簡潔にするための擬似コードです)。

public class BaseClass {
    public string str1;
    public string str2;
}

public class DerivedClass : BaseClass {
    public string str3;
    public string str4;
}

public List<DerivedClass> SetItemSource(List<DerivedClass> list) {
    dataGrid.ItemSource = list;
}

コードを実行すると、列は次の順序になります。

str3 str4 str1 str2

私はそれらを次のように表示したいと思います:

str1 str2 str3 str4

これを行う方法はありますか?SilverlightDataGridは非常に柔軟性がないと感じています。

4

1 に答える 1

0

標準クラスしかなく、列の順序を変更したい場合は、注釈を使用します。

[Display(Order=2)]
public string str1 { get; set }

[Display(Order=1)]
public string str2 { get; set; }

派生クラスでこれを試しました:

 public class BaseClass
    {
        [Display(Order=1)]
        public string str1 { get; set; }
        [Display(Order=3)]
        public string str2 { get; set; }
    }

    public class DerivedClass : BaseClass
    {
        [Display(Order=4)]
        public string str3 { get; set; }
        [Display(Order=2)]
        public string str4 { get; set; }
    }

私のグリッド列は次のとおりでした: str1 str4 str2 str3 予想通り。

[編集] using 宣言を含める必要があります: using System.ComponentModel.DataAnnotations;[表示...] を使用するには、グリッドビューとデータフォームの両方を操作するのが本当に楽しいです。ほとんどの人は、データフォームが嫌いです。LOB アプリに適合させて機能させる方法を理解するのに何時間もかかりましたが、今では UI 開発者にとって信じられないほど強力で非常に高速です。

また、データ注釈に慣れていない場合、それらは絶対に素晴らしいものです。[Required(true)]、[Display(Name="String 3")]、[StringLength(3,ErrorMessage="このフィールドの長さは 3 文字を超えることはできません")]、Range(0,10) などの属性を設定できます。 ,ErrorMessage="Must be 0-10)")] など。検証エラーは自動的に UI にバブルアップします。彼らは私たちの開発プロセスで非常に多くの時間を節約してくれました. [/編集]

于 2011-05-04T16:44:54.847 に答える