「東雲 忠太郎」の平凡な日常のできごと

「東雲 忠太郎」の平凡な日常のできごと

2024.03.25
XML
カテゴリ: C#.NET


以下は、C# WPF で `ListView` をカスタマイズするサンプルコードです。この例では、`GridView` を使用して `ListView` をカスタマイズします。各列のヘッダーとデータの表示を設定します。


```xml

<Window x:Class="WpfApp.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        Title="MainWindow" Height="450" Width="800">

    <Grid>

        <ListView ItemsSource="{Binding People}">

            <ListView.View>

                <GridView>

                    <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" Width="120"/>

                    <GridViewColumn Header="Age" DisplayMemberBinding="{Binding Age}" Width="80"/>

                    <GridViewColumn Header="Country" DisplayMemberBinding="{Binding Country}" Width="100"/>

                </GridView>

            </ListView.View>

        </ListView>

    </Grid>

</Window>

```


上記のコードでは、`ListView` を使用してデータを表示し、`GridView` を使用して列を定義します。各 `GridViewColumn` には `Header` プロパティを設定して列のヘッダーを指定し、`DisplayMemberBinding` プロパティを使用して列に表示されるデータをバインドします。


次に、これらのプロパティを持つモデルクラスを定義します。


```csharp

using System.Collections.ObjectModel;

using System.ComponentModel;


namespace WpfApp

{

    public class Person : INotifyPropertyChanged

    {

        private string _name;

        private int _age;

        private string _country;


        public string Name

        {

            get { return _name; }

            set

            {

                _name = value;

                OnPropertyChanged(nameof(Name));

            }

        }


        public int Age

        {

            get { return _age; }

            set

            {

                _age = value;

                OnPropertyChanged(nameof(Age));

            }

        }


        public string Country

        {

            get { return _country; }

            set

            {

                _country = value;

                OnPropertyChanged(nameof(Country));

            }

        }


        public event PropertyChangedEventHandler PropertyChanged;


        protected virtual void OnPropertyChanged(string propertyName)

        {

            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));

        }

    }


    public class MainViewModel

    {

        public ObservableCollection<Person> People { get; set; }


        public MainViewModel()

        {

            People = new ObservableCollection<Person>

            {

                new Person { Name = "Alice", Age = 30, Country = "USA" },

                new Person { Name = "Bob", Age = 40, Country = "Canada" },

                new Person { Name = "Charlie", Age = 25, Country = "UK" }

            };

        }

    }

}

```


ここで、`Person` クラスは `INotifyPropertyChanged` インターフェースを実装しています。`MainViewModel` クラスは、`ObservableCollection<Person>` を使用して `People` プロパティを公開し、`ListView` にバインドされます。






お気に入りの記事を「いいね!」で応援しよう

Last updated  2024.03.25 05:25:51


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

© Rakuten Group, Inc.
Create a Mobile Website
スマートフォン版を閲覧 | PC版を閲覧
Share by: