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

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

2024.03.31
XML
カテゴリ: C#.NET


MVVM パターンで DataTable の入力検証を実装するためには、ViewModel 内でデータテーブルを使用し、その中のデータに対する検証を行う必要があります。以下に、MVVM パターンで DataTable の入力検証を行うサンプルコードを示します。


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


```csharp

using System.Collections.ObjectModel;

using System.ComponentModel;

using System.Data;

using System.Windows;

using System.Windows.Input;


namespace MVVMDataTableValidation.ViewModels

{

    public class MainViewModel : INotifyPropertyChanged

    {

        private DataTable dataTable;


        public MainViewModel()

        {

            InitializeDataTable();

            AddRowCommand = new RelayCommand(AddRow);

            SaveCommand = new RelayCommand(Save);

        }


        public DataTable DataTable

        {

            get { return dataTable; }

            set

            {

                if (dataTable != value)

                {

                    dataTable = value;

                    OnPropertyChanged(nameof(DataTable));

                }

            }

        }


        public ICommand AddRowCommand { get; private set; }

        public ICommand SaveCommand { get; private set; }


        private void InitializeDataTable()

        {

            dataTable = new DataTable();

            dataTable.Columns.Add("Name", typeof(string));

            dataTable.Columns.Add("Age", typeof(int));

            // Add other columns as needed

        }


        private void AddRow(object parameter)

        {

            DataRow newRow = dataTable.NewRow();

            dataTable.Rows.Add(newRow);

        }


        private void Save(object parameter)

        {

            // Save the data

            // Perform validation before saving

            foreach (DataRow row in dataTable.Rows)

            {

                // Perform validation for each row

                if (string.IsNullOrWhiteSpace(row["Name"].ToString()) || (int)row["Age"] <= 0)

                {

                    MessageBox.Show("Invalid data. Please correct the errors before saving.");

                    return;

                }

            }


            MessageBox.Show("Data saved successfully!");

        }


        public event PropertyChangedEventHandler PropertyChanged;


        protected virtual void OnPropertyChanged(string propertyName)

        {

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

        }

    }

}

```


次に、View (UI) の XAML を作成します。


```xml

<Window x:Class="MVVMDataTableValidation.MainWindow"

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

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

        xmlns:local="clr-namespace:MVVMDataTableValidation.ViewModels"

        Title="MVVM DataTable Validation" Height="300" Width="400"

        DataContext="{Binding Source={StaticResource Locator}, Path=MainViewModel}">

    <Grid>

        <DataGrid ItemsSource="{Binding DataTable}" AutoGenerateColumns="True" Margin="10"/>

        <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,10">

            <Button Content="Add Row" Command="{Binding AddRowCommand}" Margin="5"/>

            <Button Content="Save" Command="{Binding SaveCommand}" Margin="5"/>

        </StackPanel>

    </Grid>

</Window>

```


このサンプルコードでは、MVVM パターンを使用して、データテーブルを含む ViewModel を定義し、データテーブル内のデータの検証を行っています。データテーブルの内容は DataGrid で表示され、新しい行を追加するための「Add Row」ボタンとデータを保存するための「Save」ボタンが用意されています。データを保存する際には、各行のデータが検証され、無効なデータがある場合は保存されません。






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

Last updated  2024.03.31 14:52:14


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

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