6

次のように XAML で宣言された 3 つのヘッダーを持つ ListView があります。

<ListView Name="myListView">
  <ListView.View>
    <GridView>
      <GridViewColumn Header="H1"/>
      <GridViewColumn Header="H2"/>
      <GridViewColumn Header="H3"/>
    </GridView>
  </ListView.View>
</ListView>

この ListView に ListViewItem をプログラムで追加して、1 列目、2 列目、3 列目に個別に配置される ListViewItem 内のコンテンツを設定できるようにしたいと考えています。これまでのところ、私はこれまでしか得ていません:

ListViewItem l = new ListViewItem();
l.Content = "Content";
myListView.Items.Add(l);

これにより、各列が文字列「Content」に設定されます。上記のコードを変更して、1 列目、2 列目、3 列目にそれぞれ「コンテンツ 1」、「コンテンツ 2」、「コンテンツ 3」を表示する ListViewItem を追加するにはどうすればよいですか? ListViewItem 内で SubItem または ListViewSubItem プロパティを検索しようとしましたが、何も見つかりませんでした。

簡単な解決策があると思いますが、間違っているかもしれません。各列の個々の変更を反映するように Content プロパティをプログラムで設定するという質問への回答のみが必要なので、データ バインディングについては言及しないでください。

どうもありがとうございました。

4

2 に答える 2

12

これはデータバインディングではありません。Binding ステートメントは、列に名前を付けるものと考えてください。

<ListView Name="myListView">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="H1" DisplayMemberBinding="{Binding Col1}"/>
            <GridViewColumn Header="H2" DisplayMemberBinding="{Binding Col2}"/>
            <GridViewColumn Header="H3" DisplayMemberBinding="{Binding Col3}"/>
        </GridView>
    </ListView.View>
</ListView>

コード内:

myListView.Items.Add(new { Col1 = "test1", Col2 = "Test2", Col3="test3"});
于 2010-06-30T18:25:32.030 に答える
1

で行うことは次のとおりです。

最初に列見出しを設定する必要があります。そうしないと、何も表示されません。文字列配列を使用してリスト ビュー アイテムを追加します。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);

        listView1.View=View.Details;
        //Set Columns
        listView1.Columns.Add("Col1");
        listView1.Columns.Add("Col2");
        listView1.Columns.Add("Col3");
        //Fill Rows
        ListViewItem lvi;
        lvi=new ListViewItem(new string[] { "A", "B", "C" });
        listView1.Items.Add(lvi);
        lvi=new ListViewItem(new string[] { "D", "E", "F" });
        listView1.Items.Add(lvi);
        lvi=new ListViewItem(new string[] { "G", "H", "I" });
        listView1.Items.Add(lvi);
    }
}

結果のスクリーンショットは

スク

于 2010-06-30T18:42:28.443 に答える