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

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

2024.06.08
XML
カテゴリ: WPFC#.NET


以下に、名前、年齢、性別、電話番号、メールアドレスのプロパティを持つ`Person`クラスを作成します。


### Model

まず、`Person`クラスを定義します。


```csharp

public class Person

{

    public string Name { get; set; }

    public int Age { get; set; }

    public string Gender { get; set; }

    public string PhoneNumber { get; set; }

    public string Email { get; set; }

}

```


### ViewModel

次に、`Person`オブジェクトを管理する`MainViewModel`クラスを定義します。


```csharp

using System.ComponentModel;


public class MainViewModel : INotifyPropertyChanged

{

    private Person _person;


    public MainViewModel()

    {

        _person = new Person

        {

            Name = "John Doe",

            Age = 30,

            Gender = "Male",

            PhoneNumber = "123-456-7890",

            Email = "john.doe@example.com"

        };

    }


    public string Name

    {

        get { return _person.Name; }

        set

        {

            if (_person.Name != value)

            {

                _person.Name = value;

                OnPropertyChanged("Name");

            }

        }

    }


    public int Age

    {

        get { return _person.Age; }

        set

        {

            if (_person.Age != value)

            {

                _person.Age = value;

                OnPropertyChanged("Age");

            }

        }

    }


    public string Gender

    {

        get { return _person.Gender; }

        set

        {

            if (_person.Gender != value)

            {

                _person.Gender = value;

                OnPropertyChanged("Gender");

            }

        }

    }


    public string PhoneNumber

    {

        get { return _person.PhoneNumber; }

        set

        {

            if (_person.PhoneNumber != value)

            {

                _person.PhoneNumber = value;

                OnPropertyChanged("PhoneNumber");

            }

        }

    }


    public string Email

    {

        get { return _person.Email; }

        set

        {

            if (_person.Email != value)

            {

                _person.Email = value;

                OnPropertyChanged("Email");

            }

        }

    }


    public event PropertyChangedEventHandler PropertyChanged;


    protected void OnPropertyChanged(string propertyName)

    {

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

    }

}

```


### View (XAML)

次に、ビューを定義します。ここでは、各プロパティをバインドして表示および編集できるようにします。


```xml

<Window x:Class="WpfMvvmApp.MainWindow"

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

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

        xmlns:local="clr-namespace:WpfMvvmApp"

        Title="MainWindow" Height="350" Width="400">

    <Window.DataContext>

        <local:MainViewModel />

    </Window.DataContext>

    <Grid>

        <StackPanel>

            <TextBox Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}" Margin="10" PlaceholderText="Name" />

            <TextBox Text="{Binding Age, UpdateSourceTrigger=PropertyChanged}" Margin="10" PlaceholderText="Age" />

            <TextBox Text="{Binding Gender, UpdateSourceTrigger=PropertyChanged}" Margin="10" PlaceholderText="Gender" />

            <TextBox Text="{Binding PhoneNumber, UpdateSourceTrigger=PropertyChanged}" Margin="10" PlaceholderText="Phone Number" />

            <TextBox Text="{Binding Email, UpdateSourceTrigger=PropertyChanged}" Margin="10" PlaceholderText="Email" />


            <TextBlock Text="{Binding Name}" Margin="10" FontSize="16"/>

            <TextBlock Text="{Binding Age}" Margin="10" FontSize="16"/>

            <TextBlock Text="{Binding Gender}" Margin="10" FontSize="16"/>

            <TextBlock Text="{Binding PhoneNumber}" Margin="10" FontSize="16"/>

            <TextBlock Text="{Binding Email}" Margin="10" FontSize="16"/>

        </StackPanel>

    </Grid>

</Window>

```


### Code-Behind

最後に、ウィンドウのコードビハインドです。


```csharp

using System.Windows;


namespace WpfMvvmApp

{

    public partial class MainWindow : Window

    {

        public MainWindow()

        {

            InitializeComponent();

        }

    }

}

```


### 完成したプロジェクトの構成

プロジェクトは以下のような構成になります。


```

WpfMvvmApp/

├── MainWindow.xaml

├── MainWindow.xaml.cs

├── MainViewModel.cs

└── Person.cs

```


これで、名前、年齢、性別、電話番号、メールアドレスのプロパティを持つ`Person`クラスを使用したWPFアプリケーションが完成しました。各プロパティはバインディングされており、UIから編集できます。






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

Last updated  2024.06.08 23:45:43


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

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