5

こんにちは私はListViewで3つの列を作成しようとしています。

これを読みましたが、C#でプログラム的に各列のデータを設定したいと思います。

行と列にデータを表示する方法XAMLウィンドウ8

たとえば、アーティスト名、曲名、アーティストが必要です。

4

2 に答える 2

7

データを保存するために次のようなものがあると仮定します。

public class SongDetails
{
    public string ArtistName {get; set;}
    public string SongName {get; set;}
    public string Artist {get; set;}
}

そして、(提供したリンクのように)DataTemplateが定義されたListViewには、ListViewに名前を付けるだけです。

<ListView Name="ListViewSongs">
    <ListView.ItemTemplate>
        <DataTemplate>
            <Grid Width="500" VerticalAlignment="Center">

                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="120" />
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="150" />
                </Grid.ColumnDefinitions>

                <TextBlock Grid.Column="0" Text="{Binding Artist}" />
                <TextBlock Grid.Column="1" Text="{Binding ArtistName}" />
                <TextBlock Grid.Column="2" Text="{Binding SongName}" />
            </Grid>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

次に、コードビハインドから、それは次の場合にすぎません。

var songDetails = new[]
    {
        new SongDetails {Artist = "a1", ArtistName = "a2", SongName = "a3"},
        new SongDetails {Artist = "b1", ArtistName = "b2", SongName = "b3"}
    };

ListViewSongs.ItemsSource = songDetails;
于 2012-10-10T23:38:17.093 に答える
4

アイテム/グリッドの幅をハードコーディングしたくない場合のSebBouletの回答のXAMLの改善(レスポンシブデザイン):

<ListView Name="ListViewSongs">
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
        </Style>
    </ListView.ItemContainerStyle>
    <ListView.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="120" />
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="150" />
                </Grid.ColumnDefinitions>
                <TextBlock Grid.Column="0" Text="{Binding Artist}" />
                <TextBlock Grid.Column="1" Text="{Binding ArtistName}" />
                <TextBlock Grid.Column="2" Text="{Binding SongName}" />
            </Grid>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

関連トピック:ListBox ItemTemplateを取得して、ListBoxの幅全体を水平方向に拡大する方法は?

于 2016-03-16T20:30:28.800 に答える