2

私はList<Data>場所を持っています:

class Data
{
   public string Name { get; set; }
}

そして、このリストItemsSourceを a のとして使用しListViewます。my の

は(最初は) with oneであり、 myの を使用してプロパティをバインドします。ViewListViewGridViewGridViewColumnData.NameDisplayMemberBindingGridViewColumn

実行時GridViewColumnmyにnew を追加することがあるため、この新しい列にの新しいプロパティGridViewをバインドする必要があります。Data

これどうやってするの?

4

3 に答える 3

3

いいえ、実行時に「通常の」プロパティを追加することはできません-率直に言って、あなたが説明したものはDataTableにバインドしてデータをマップしたいかもしれません.実行時にこれを行うことができますが、かなり複雑です. DataTable には既に完全な実装があります。

于 2012-09-24T15:47:27.410 に答える
1

編集:私は質問を誤解したようです。クラスにプロパティを追加しようとしている場合Dataは、運が悪いと思います。すでにプロパティがあり、その既存のプロパティをにバインドするだけの場合はGridView、以下のコードが役立ちます。

GridViewのがすでに設定されていると仮定すると、MSDNDataContextの例に似たものを使用できます。

GridViewColumn gvc = new GridViewColumn();
gvc.DisplayMemberBinding = new Binding("Surname");
gvc.Header = "Surname";
gvc.Width = 100;
myGridView.Columns.Add(gvc);
于 2012-09-24T15:44:18.823 に答える
0

実際のプロパティをデータ インスタンスに追加するソリューションはかなり複雑です。

しかし、おそらくこれらのソリューションの1つで十分です

ダイナミクスを使用できます(詳細はこちら:ダイナミクス

        dynamic dynamicData = new ExpandoObject();
        dynamicData.Name = "Name";
        dynamicData.Surname = "SomeSurname";

データ項目のコレクションを再構築できる場合は、匿名型を使用できます (詳細はこちら匿名型)

        var data = new Data();
        string newPropertyName = "Surname";
        var data2 = new { Name = data.Name, newPropertyName = "SomeString" };

DataTemplates を使用して、contrete タイプのデータにバインドしている場合を除きます。

于 2012-09-24T15:42:00.857 に答える