Microsoft Technologies XAML Data Validation Techniques গাইড ও নোট

218

Data Validation XAML-এ একটি গুরুত্বপূর্ণ বিষয়, যা অ্যাপ্লিকেশনগুলোতে ইনপুট ডাটা সঠিক ও নির্ভুল হওয়ার জন্য ব্যবহৃত হয়। XAML এবং WPF (Windows Presentation Foundation), UWP (Universal Windows Platform) বা Xamarin অ্যাপ্লিকেশনগুলিতে ডাটা ভ্যালিডেশন ব্যবহৃত হয়, যেখানে ইউজার ইনপুট গ্রহণের পর তা চেক করে নিশ্চিত করা হয় যে ইনপুটটি নির্দিষ্ট শর্ত পূরণ করছে কিনা। এতে করে ইউজারদের সঠিক তথ্য ইনপুট দেওয়ার জন্য প্ররোচিত করা হয় এবং ভুল বা অকার্যকর ডাটা সিস্টেমে প্রবেশ করা থেকে রোধ করা হয়।

XAML-এ ডাটা ভ্যালিডেশন সাধারণত Validation Rules, Data Annotations, Custom Validation, এবং Binding Validation এর মাধ্যমে করা হয়।


XAML Data Validation Methods

১. Data Annotations (ডাটা অ্যানোটেশন)

Data Annotations সাধারণত MVVM (Model-View-ViewModel) প্যাটার্নে ব্যবহৃত হয়। Data Annotations অ্যাট্রিবিউট ব্যবহার করে সহজেই ডাটা ভ্যালিডেশন করা যায়। এটি ডাটার উপর Required, StringLength, Range, RegularExpression ইত্যাদি চেক করতে সাহায্য করে।

Data Annotations উদাহরণ:

using System.ComponentModel.DataAnnotations;

public class User
{
    [Required(ErrorMessage = "নাম অবশ্যই প্রদান করতে হবে")]
    public string Name { get; set; }

    [Range(18, 120, ErrorMessage = "বয়স ১৮ থেকে ১২০ এর মধ্যে হতে হবে")]
    public int Age { get; set; }
}

এখানে:

  • Required অ্যাট্রিবিউট নামের ক্ষেত্রে ইনপুট শূন্য না থাকার জন্য চেক করে।
  • Range অ্যাট্রিবিউট বয়সের মান ১৮ থেকে ১২০ এর মধ্যে থাকতে হবে, তা যাচাই করে।

এটি XAML এ Binding এর মাধ্যমে ব্যবহার করা যায়।


২. Validation Rules (ভ্যালিডেশন রুলস)

XAML-এ ValidationRules ব্যবহার করে ডাটা ভ্যালিডেশন করতে পারি। এটি সাধারণত Binding এর সঙ্গে ব্যবহার করা হয় এবং একটি কাস্টম ভ্যালিডেশন রুল তৈরি করে ইনপুট ডেটা যাচাই করতে সাহায্য করে।

ValidationRules উদাহরণ:

<Window x:Class="MyApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Validation Example" Height="300" Width="400">
    <Grid>
        <TextBox Name="NameTextBox">
            <TextBox.ValidationRules>
                <local:NameValidationRule />
            </TextBox.ValidationRules>
        </TextBox>
    </Grid>
</Window>

এখানে local:NameValidationRule একটি কাস্টম ValidationRule যা NameTextBox এর ইনপুট যাচাই করবে।

কাস্টম Validation Rule কোড:

using System.Globalization;
using System.Windows.Controls;

public class NameValidationRule : ValidationRule
{
    public override ValidationResult Validate(object value, CultureInfo cultureInfo)
    {
        string name = value as string;
        if (string.IsNullOrEmpty(name))
        {
            return new ValidationResult(false, "নাম অবশ্যই প্রদান করতে হবে");
        }
        return ValidationResult.ValidResult;
    }
}

এখানে:

  • ValidationRule ক্লাসটি ইনপুট যাচাইয়ের জন্য কাস্টম রুল তৈরি করতে ব্যবহৃত হয়।
  • Validate মেথডে আপনি নিজের কাস্টম লজিক ব্যবহার করতে পারেন, যেমন একটি শর্ত প্রদান করা।

৩. INotifyDataErrorInfo (ডাটা এরর চেকিং)

INotifyDataErrorInfo একটি ইন্টারফেস, যা মডেল (Model) ক্লাসে ব্যবহার করা হয়। এটি ডাটা ভ্যালিডেশন করতে সাহায্য করে এবং ইউজারের ইনপুটের কোনো ত্রুটি হলে তা জানিয়ে দেয়।

INotifyDataErrorInfo উদাহরণ:

using System.Collections;
using System.ComponentModel;

public class User : INotifyDataErrorInfo
{
    private string _name;
    private Dictionary<string, List<string>> _errors = new Dictionary<string, List<string>>();

    public string Name
    {
        get { return _name; }
        set
        {
            _name = value;
            ValidateName();
            OnPropertyChanged(nameof(Name));
        }
    }

    private void ValidateName()
    {
        if (string.IsNullOrWhiteSpace(Name))
        {
            AddError(nameof(Name), "নাম অবশ্যই প্রদান করতে হবে");
        }
        else
        {
            RemoveError(nameof(Name));
        }
    }

    private void AddError(string propertyName, string error)
    {
        if (!_errors.ContainsKey(propertyName))
        {
            _errors[propertyName] = new List<string>();
        }
        _errors[propertyName].Add(error);
    }

    private void RemoveError(string propertyName)
    {
        if (_errors.ContainsKey(propertyName))
        {
            _errors.Remove(propertyName);
        }
    }

    public IEnumerable GetErrors(string propertyName)
    {
        return _errors.ContainsKey(propertyName) ? _errors[propertyName] : null;
    }

    public bool HasErrors => _errors.Any();

    public event PropertyChangedEventHandler PropertyChanged;

    private void OnPropertyChanged(string propertyName)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

এখানে:

  • INotifyDataErrorInfo ব্যবহার করে আপনি ক্লাসের প্রতিটি প্রপার্টির ত্রুটিগুলি যাচাই করতে পারেন।
  • GetErrors মেথডের মাধ্যমে একটি প্রপার্টি ত্রুটি থাকলে সেটি ফেরত দেয়।

৪. Binding Validation (বাইন্ডিং ভ্যালিডেশন)

XAML এ Binding এর মাধ্যমে ডাটা ভ্যালিডেশন করার জন্য ValidatesOnDataErrors এবং NotifyOnValidationError প্যারামিটার ব্যবহার করা যায়। এটি নিশ্চিত করে যে যখন একটি Binding ত্রুটিপূর্ণ হয় তখন ভ্যালিডেশন প্রক্রিয়া শুরু হবে এবং ত্রুটির বার্তা ইউজারকে দেখানো হবে।

Binding Validation উদাহরণ:

<TextBox Name="NameTextBox" Text="{Binding Name, ValidatesOnDataErrors=True, NotifyOnValidationError=True}" />

এখানে:

  • ValidatesOnDataErrors প্যারামিটার ডাটা ত্রুটি চেক করার জন্য এনাবল করে।
  • NotifyOnValidationError প্যারামিটার ভ্যালিডেশন ত্রুটি হলে ইউজারকে জানিয়ে দেয়।

XAML Data Validation Best Practices

  1. Error Messaging: ইউজারের জন্য স্পষ্ট এবং সুনির্দিষ্ট ত্রুটি বার্তা প্রদান করুন, যাতে তারা দ্রুত বুঝতে পারে কোথায় সমস্যা হয়েছে।
  2. Real-Time Validation: যতটা সম্ভব রিয়েল-টাইম ইনপুট ভ্যালিডেশন প্রয়োগ করুন, যাতে ইউজার ইনপুট দেওয়ার সাথে সাথে ত্রুটি দেখতে পারে।
  3. Centralized Validation: ভ্যালিডেশন কোডটি এক জায়গায় রাখুন (যেমন ViewModel বা Model ক্লাসে), যাতে তা সহজে পরিচালনা করা যায়।

সারাংশ

XAML-এ ডাটা ভ্যালিডেশন করার জন্য একাধিক শক্তিশালী পদ্ধতি রয়েছে, যার মধ্যে Data Annotations, Validation Rules, INotifyDataErrorInfo এবং Binding Validation অন্যতম। প্রতিটি পদ্ধতির মাধ্যমে আপনি ইনপুট ডাটা যাচাই করতে পারেন এবং অ্যাপ্লিকেশনটি আরো সঠিক এবং ব্যবহারকারী বান্ধব করতে পারেন।

Content added By

Data Validation Rules এবং Error Template ব্যবহার

287

XAML (Extensible Application Markup Language) এ Data Validation এবং Error Template ব্যবহার করা হয় ইউজারের ইনপুট যাচাই করার জন্য এবং যদি কোন ত্রুটি ঘটে, তা UI-তে প্রদর্শন করার জন্য। এটি UI উপাদানগুলির সাথে data binding এর মাধ্যমে সংযুক্ত হয়ে ইনপুট ভ্যালিডেশন পরিচালনা করে। XAML এ এই ফিচারগুলি ব্যবহার করা হলে, আপনি অ্যাপ্লিকেশনটির ইউজার ইন্টারফেসে ডাটা ইন্টারঅ্যাকশন এবং ব্যবহারকারীর ত্রুটি বিষয়ক সঠিক তথ্য প্রদান করতে পারেন।


Data Validation Rules

Data Validation Rules হল এমন শর্তাবলী বা লজিক, যা নির্দিষ্ট ডেটা টাইপ বা ফিল্ডের মান যাচাই করে। এগুলি সাধারণত IDataErrorInfo বা ValidationRules এর মাধ্যমে ডিফাইন করা হয়। যখন কোন ব্যবহারকারী একটি ইনপুট ফিল্ডে ডেটা প্রদান করেন, তখন এই রুলগুলি সেই ইনপুট যাচাই করতে ব্যবহৃত হয়।

XAML এ ValidationRules ব্যবহার করে আপনি একটি ইনপুট ফিল্ডের জন্য ভ্যালিডেশন রুল সেট করতে পারেন, যা ইনপুটে ভুল হলে একটি ত্রুটি দেখাবে।

ValidationRules উদাহরণ:

<TextBox Width="200">
    <TextBox.Text>
        <Binding Path="Age">
            <Binding.ValidationRules>
                <ExceptionValidationRule />
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</TextBox>

এখানে:

  • ExceptionValidationRule হল একটি স্ট্যান্ডার্ড রুল যা একটি এক্সেপশন সনাক্ত করলে ত্রুটি দেখাবে। এখানে Age প্রপার্টি থেকে ইনপুট নেওয়া হচ্ছে এবং ত্রুটি পাওয়ার সময় এটি UI তে প্রদর্শিত হবে।

Custom Validation Rule উদাহরণ:

<TextBox Width="200">
    <TextBox.Text>
        <Binding Path="Age">
            <Binding.ValidationRules>
                <local:AgeValidationRule />
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</TextBox>

এখানে:

  • AgeValidationRule একটি কাস্টম ভ্যালিডেশন রুল, যেটি C# কোডে ডিফাইন করা হবে এবং এই রুলটি ইনপুট যাচাই করবে (যেমন, বয়স ১৮ এর নিচে হতে পারবে না)।

AgeValidationRule C# কোড:

public class AgeValidationRule : ValidationRule
{
    public override ValidationResult Validate(object value, CultureInfo cultureInfo)
    {
        int age;
        if (int.TryParse(value.ToString(), out age))
        {
            if (age < 18)
                return new ValidationResult(false, "Age must be 18 or older");
            else
                return ValidationResult.ValidResult;
        }
        return new ValidationResult(false, "Invalid Age");
    }
}

Error Template

Error Template হল একটি কাস্টম UI ডিফিনেশন যা ডাটা ভ্যালিডেশন এরর ঘটলে ত্রুটির বার্তা প্রদর্শন করতে ব্যবহৃত হয়। এটি ControlTemplate অথবা ErrorTemplate হিসেবে কাস্টম স্টাইল/ডিজাইন তৈরি করতে সাহায্য করে, যাতে ত্রুটির বার্তা সুন্দরভাবে UI তে প্রদর্শিত হয়।

XAML এ ErrorTemplate ব্যবহার করে আপনি একটি কাস্টম ইরর মেসেজ ফরম্যাট করতে পারেন, যা ভ্যালিডেশন রুলটি ত্রুটি দেখালে ব্যবহারকারীর সামনে প্রদর্শিত হবে।

ErrorTemplate উদাহরণ:

<TextBox Width="200">
    <TextBox.Text>
        <Binding Path="Age">
            <Binding.ValidationRules>
                <local:AgeValidationRule />
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
    <TextBox.Template>
        <ControlTemplate TargetType="TextBox">
            <Border BorderBrush="Gray" BorderThickness="1">
                <TextBox x:Name="PART_ContentHost" />
            </Border>
            <ControlTemplate.Triggers>
                <DataTrigger Binding="{Binding Path=(Validation.HasError), RelativeSource={RelativeSource Self}}" Value="True">
                    <Setter TargetName="PART_ContentHost" Property="BorderBrush" Value="Red"/>
                    <Setter TargetName="PART_ContentHost" Property="ToolTip" Value="Invalid input, please correct."/>
                </DataTrigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>
    </TextBox.Template>
</TextBox>

এখানে:

  • DataTrigger ব্যবহার করা হয়েছে যা Validation.HasError প্রপার্টির মান True হলে, টেক্সট বক্সের বর্ডার ব্রাশ লাল (Red) হবে এবং একটি টুলটিপ ত্রুটির বার্তা দেখাবে।
  • PART_ContentHost হল TextBox এর মূল অংশ যেখানে ইন্টারঅ্যাকশন করা হয়।

ব্যবহারকারী UI তে ত্রুটি বার্তা প্রদর্শন

ভ্যালিডেশন রুল বা ইরর টেমপ্লেট ব্যবহারের মাধ্যমে আপনি ব্যবহারকারীর ইনপুটের ত্রুটির বার্তা সুন্দরভাবে প্রদর্শন করতে পারেন। সাধারণত Validation.Errors এর মাধ্যমে ত্রুটি বার্তা সংগ্রহ করা হয় এবং XAML এ তা UI তে দেখানো হয়।

Validation.Errors উদাহরণ:

<TextBox Width="200" Margin="10">
    <TextBox.Text>
        <Binding Path="Age">
            <Binding.ValidationRules>
                <local:AgeValidationRule />
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
    <TextBox.ToolTip>
        <Binding Path="(Validation.Errors)" StringFormat="{}{0}" />
    </TextBox.ToolTip>
</TextBox>

এখানে:

  • Validation.Errors ব্যবহার করে ইনপুটের ত্রুটি বার্তা ToolTip এ দেখানো হয়েছে।

Conclusion

XAML এ Data Validation এবং Error Template ব্যবহারের মাধ্যমে আপনি UI তে ডাটা ভ্যালিডেশন এবং ত্রুটির বার্তা সুন্দরভাবে প্রদর্শন করতে পারেন, যা ব্যবহারকারীর অভিজ্ঞতাকে আরও উন্নত এবং প্রফেশনাল করে তোলে। এটি অ্যাপ্লিকেশনকে ডাটা ইন্টিগ্রিটি রক্ষা করতে এবং ইউজার ইন্টারফেসকে আরও ফ্রেন্ডলি ও রেসপন্সিভ করতে সাহায্য করে।

Content added By

Validation Rule Class তৈরি এবং কনফিগার করা

245

XAML এবং WPF (Windows Presentation Foundation) অ্যাপ্লিকেশনে Validation Rules ব্যবহার করা হয় যাতে ইউজার ইনপুট সঠিক এবং প্রমিত থাকে। এটি মূলত Data Binding এবং IValueConverter এর সাথে কাজ করে, যেখানে UI-তে প্রদর্শিত ডেটা যাচাই করা হয়।

Validation Rule হল একটি কাস্টম ক্লাস যা ডেটার মান যাচাই করার জন্য তৈরি করা হয়। এটি UI ইনপুটের মান যাচাই করতে ব্যবহার করা হয় এবং যদি ইনপুট মান বৈধ না হয়, তবে একটি ত্রুটি (error) দেখায়।

WPF এ Validation Rule তৈরি এবং কনফিগার করতে নিম্নলিখিত স্টেপগুলো অনুসরণ করা যায়:


১. Validation Rule Class তৈরি করা

প্রথমে একটি কাস্টম Validation Rule ক্লাস তৈরি করতে হবে যা ValidationRule ক্লাস থেকে ইনহেরিট করবে এবং Validate মেথডটি ওভাররাইড করবে।

উদাহরণ: IntegerValidationRule তৈরি

using System;
using System.Globalization;
using System.Windows.Controls;

public class IntegerValidationRule : ValidationRule
{
    public override ValidationResult Validate(object value, CultureInfo cultureInfo)
    {
        string input = value as string;

        // চেক করুন যদি ইনপুট একটি সংখ্যা না হয়
        if (string.IsNullOrEmpty(input) || !int.TryParse(input, out _))
        {
            // যদি ইনপুট একটি বৈধ সংখ্যা না হয়, ত্রুটি প্রদর্শন করুন
            return new ValidationResult(false, "এটি একটি বৈধ পূর্ণসংখ্যা হতে হবে");
        }

        // যদি ইনপুট বৈধ হয়, তাহলে ValidationResult কে True রিটার্ন করুন
        return ValidationResult.ValidResult;
    }
}

এখানে:

  • IntegerValidationRule নামক কাস্টম ভ্যালিডেশন রুল তৈরি করা হয়েছে যা একটি পূর্ণসংখ্যা চেক করবে।
  • Validate মেথডটি ইনপুট মানকে যাচাই করে এবং যদি তা একটি পূর্ণসংখ্যা না হয়, তবে একটি ত্রুটি বার্তা প্রদর্শন করবে।

২. Validation Rule ব্যবহার করা

এবার আমাদের তৈরি করা ValidationRule ক্লাসটি XAML ফাইলে ব্যবহার করতে হবে। সাধারণত Binding এর সাথে ValidationRules যোগ করা হয় যাতে ইউজার ইনপুট যাচাই করা যায়।

উদাহরণ: TextBox এ Validation Rule প্রয়োগ করা

<Window x:Class="ValidationExample.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Validation Example" Height="200" Width="300">

    <Grid>
        <TextBox Name="inputTextBox" HorizontalAlignment="Left" VerticalAlignment="Top" Width="200" Margin="10">
            <TextBox.Text>
                <Binding Path="UserInput">
                    <Binding.ValidationRules>
                        <local:IntegerValidationRule />
                    </Binding.ValidationRules>
                </Binding>
            </TextBox.Text>
        </TextBox>

        <TextBlock Name="errorText" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,40,0,0" Foreground="Red"/>
    </Grid>
</Window>

এখানে:

  • Binding ব্যবহার করা হয়েছে TextBox এর Text প্রপার্টির জন্য, এবং ValidationRules এর মধ্যে IntegerValidationRule যোগ করা হয়েছে।
  • IntegerValidationRule ক্লাসটি যাচাই করবে যে ইনপুট একটি পূর্ণসংখ্যা কিনা।
  • errorText নামক একটি TextBlock তৈরি করা হয়েছে যা ত্রুটি বার্তা প্রদর্শন করবে।

৩. Validation Result হ্যান্ডলিং এবং ত্রুটি প্রদর্শন

এখন, যদি ইনপুটে কোনো ভুল থাকে, তাহলে ত্রুটি বার্তা UI তে দেখানোর জন্য Validation.Error ইভেন্ট ব্যবহার করতে হবে।

উদাহরণ: ত্রুটি বার্তা প্রদর্শন

using System.Windows;

namespace ValidationExample
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            this.DataContext = this;
        }

        private string _userInput;
        public string UserInput
        {
            get { return _userInput; }
            set
            {
                _userInput = value;
                ValidateInput();
            }
        }

        private void ValidateInput()
        {
            // Validate the input manually if needed
            var validationResult = new IntegerValidationRule().Validate(UserInput, null);

            if (!validationResult.IsValid)
            {
                errorText.Text = validationResult.ErrorContent.ToString();
            }
            else
            {
                errorText.Text = string.Empty;
            }
        }
    }
}

এখানে:

  • UserInput প্রপার্টি DataContext হিসেবে ব্যবহৃত হয়েছে এবং IntegerValidationRule ক্লাসের মাধ্যমে ইউজারের ইনপুট যাচাই করা হচ্ছে।
  • যদি ইনপুট সঠিক না হয়, তবে errorText এর মাধ্যমে ত্রুটি বার্তা প্রদর্শন করা হবে।

৪. XAML এ ত্রুটি বার্তা কনফিগার করা

আপনি যদি ইন্টারফেসে ত্রুটি বার্তা দেখাতে চান, তাহলে Validation.ErrorTemplate ব্যবহার করে ত্রুটি বার্তার জন্য একটি কাস্টম টেমপ্লেট তৈরি করতে পারেন।

উদাহরণ: Custom ErrorTemplate

<TextBox Name="inputTextBox" HorizontalAlignment="Left" VerticalAlignment="Top" Width="200" Margin="10">
    <TextBox.Text>
        <Binding Path="UserInput">
            <Binding.ValidationRules>
                <local:IntegerValidationRule />
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
    <TextBox.ValidationErrorTemplate>
        <ControlTemplate>
            <StackPanel>
                <Border BorderBrush="Red" BorderThickness="2">
                    <AdornedElementPlaceholder />
                </Border>
                <TextBlock Foreground="Red" Text="Invalid input"/>
            </StackPanel>
        </ControlTemplate>
    </TextBox.ValidationErrorTemplate>
</TextBox>

এখানে:

  • ValidationErrorTemplate ব্যবহার করা হয়েছে যাতে ইনপুট ভুল হলে টেক্সটবক্সের চারপাশে একটি Red Border এবং ত্রুটি বার্তা প্রদর্শিত হয়।

সারাংশ

  • Validation Rule তৈরি করা WPF অ্যাপ্লিকেশনগুলিতে ইউজারের ইনপুট যাচাই করতে খুব কার্যকরী।
  • ValidationRule ক্লাসের মাধ্যমে কাস্টম যাচাই তৈরি করতে হয়, যেখানে Validate মেথডটি ইনপুট যাচাই করে।
  • XAMLValidationRules এবং ValidationErrorTemplate ব্যবহার করে UI তে ত্রুটি দেখানো যায় এবং ইউজারকে সঠিক ইনপুট দেওয়ার জন্য উৎসাহিত করা হয়।

এই পদ্ধতিতে আপনি কাস্টম ভ্যালিডেশন রুল তৈরি এবং কনফিগার করে ব্যবহারকারীর ইনপুটকে সঠিকভাবে যাচাই করতে পারেন।

Content added By

IDataErrorInfo এবং Validation Binding Techniques

221

XAML এ ডাটা ভ্যালিডেশন পরিচালনা করতে IDataErrorInfo ইন্টারফেস এবং Validation Binding টেকনিক ব্যবহার করা হয়। এগুলি আপনাকে UI উপাদানগুলোতে ইনপুট ভ্যালিডেশন চালাতে সাহায্য করে, যার মাধ্যমে ব্যবহারকারীরা সঠিক তথ্য প্রদান করতে পারে এবং ভুল তথ্য প্রদান করলে ত্রুটি বার্তা দেখানো হয়।


IDataErrorInfo ইন্টারফেস

IDataErrorInfo হল একটি ইন্টারফেস যা আপনাকে মডেল (বা ভিউ মডেল) ক্লাসে ডাটা ভ্যালিডেশন করতে সাহায্য করে। এটি একটি প্রপার্টি বা ক্ষেত্রের ভ্যালিডেশন নির্ধারণ করে এবং যদি কোন ভুল থাকে তবে একটি ত্রুটি বার্তা প্রদান করে। আপনি যখন IDataErrorInfo ইন্টারফেসটি প্রয়োগ করেন, তখন আপনি প্রতিটি প্রোপার্টির জন্য ভ্যালিডেশন লজিক নির্ধারণ করতে পারেন।

IDataErrorInfo ইন্টারফেসের মূল উপাদানসমূহ:

  1. Error: এই প্রোপার্টি পুরো মডেলের জন্য একটি সাধারণ ত্রুটি বার্তা প্রদান করে।
  2. this[string columnName]: এটি প্রপার্টি ভিত্তিক ত্রুটি বার্তা প্রদান করে। এই প্রোপার্টি নির্ধারণ করে আপনি প্রতিটি প্রোপার্টির জন্য আলাদা ভ্যালিডেশন চালাতে পারবেন।

IDataErrorInfo ব্যবহার করে ভ্যালিডেশন উদাহরণ:

public class Person : IDataErrorInfo
{
    public string Name { get; set; }
    public int Age { get; set; }

    public string Error
    {
        get
        {
            // সাধারণ ত্রুটি বার্তা
            return null;
        }
    }

    public string this[string columnName]
    {
        get
        {
            string error = null;

            if (columnName == "Name")
            {
                if (string.IsNullOrEmpty(Name))
                {
                    error = "Name cannot be empty.";
                }
            }
            else if (columnName == "Age")
            {
                if (Age <= 0)
                {
                    error = "Age must be greater than 0.";
                }
            }

            return error;
        }
    }
}

এখানে:

  • Error প্রোপার্টি কোনো সাধারণ ত্রুটি বার্তা না ফিরিয়ে দিলেও, আপনি বিশেষ কোনো প্রোপার্টির জন্য ত্রুটি বার্তা দিতে পারেন this[string columnName] প্রোপার্টি দ্বারা।
  • যদি Name অথবা Age ত্রুটিপূর্ণ হয়, তাহলে সংশ্লিষ্ট ত্রুটি বার্তা দেখানো হবে।

XAML এ Validation Binding Techniques

XAML এ Validation ব্যাবহার করার জন্য কিছু পদ্ধতি রয়েছে যা ডাটা-বাইন্ডিংয়ের সাথে ভ্যালিডেশন পরিচালনা করে। এখানে কিছু মূল ভ্যালিডেশন টেকনিক দেওয়া হল:

1. Validation.Errors ব্যবহার করে UI তে ত্রুটি বার্তা দেখানো

XAML এ Validation.Errors ব্যবহার করে আপনি UI তে ইনপুট ত্রুটি দেখাতে পারেন। সাধারণত, আপনি TextBox, ComboBox, বা অন্যান্য ইনপুট কন্ট্রোলের সাথে Binding ব্যবহার করেন এবং Validation.ErrorTemplate দিয়ে ত্রুটি বার্তা প্রদর্শন করতে পারেন।

উদাহরণ:

<Window x:Class="MyApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Validation Example" Height="300" Width="400">
    <Window.Resources>
        <Style TargetType="TextBox">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=Name, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" Value="">
                    <Setter Property="BorderBrush" Value="Red"/>
                    <Setter Property="ToolTip" Value="Name cannot be empty"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>

    <StackPanel>
        <TextBox Width="200" Height="30" Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}" />
    </StackPanel>
</Window>

এখানে:

  • Binding দিয়ে Name প্রপার্টির জন্য ইনপুট ফিল্ড যুক্ত করা হয়েছে।
  • ValidatesOnDataErrors=True ব্যবহার করা হয়েছে যাতে IDataErrorInfo এর মাধ্যমে কোনো ত্রুটি বার্তা গ্রহণ করা যায়।
  • DataTrigger ব্যবহার করে যদি Name ফাঁকা থাকে, তাহলে বর্ডার রঙ লাল হবে এবং টুলটিপে ত্রুটি বার্তা দেখানো হবে।

2. Validation.IsValid এবং ErrorTemplate ব্যবহার

একটি আরও উন্নত ভ্যালিডেশন কৌশল হল Validation.IsValid এর সাথে ErrorTemplate ব্যবহার করা। এটি UI তে ত্রুটি বার্তা কাস্টমাইজ করতে সহায়তা করে।

উদাহরণ:

<TextBox Width="200" Height="30" Text="{Binding Name, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}">
    <TextBox.ValidationErrorTemplate>
        <ControlTemplate>
            <StackPanel>
                <TextBlock Text="Invalid input!" Foreground="Red"/>
            </StackPanel>
        </ControlTemplate>
    </TextBox.ValidationErrorTemplate>
</TextBox>

এখানে:

  • ValidationErrorTemplate ব্যবহার করে একটি কাস্টম ত্রুটি টেমপ্লেট তৈরি করা হয়েছে, যা UI তে ত্রুটির জন্য একটি লাল টেক্সট দেখাবে।

Binding এ Validation করতে কিছু গুরুত্বপূর্ণ পয়েন্ট

  1. UpdateSourceTrigger: এর মানে হল যে যখনই ব্যবহারকারী ইনপুট দেয়, তখন ইনপুট আপডেট হবে (যেমন, PropertyChanged বা LostFocus ইভেন্ট)।
  2. ValidatesOnDataErrors: এটি নিশ্চিত করে যে IDataErrorInfo ইন্টারফেস ব্যবহার করে কোনো ত্রুটি হলে তা UI তে দেখানো হবে।
  3. ErrorTemplate: এটি UI তে ত্রুটির জন্য একটি কাস্টম টেমপ্লেট নির্ধারণ করতে সাহায্য করে, যেখানে আপনি ত্রুটির বার্তা বা স্টাইল কাস্টমাইজ করতে পারবেন।

সারাংশ

  • IDataErrorInfo ইন্টারফেস ব্যবহার করে আপনি মডেল স্তরে ডাটা ভ্যালিডেশন করতে পারেন এবং UI তে ত্রুটি বার্তা প্রদর্শন করতে পারেন।
  • XAML এ Validation Binding Techniques ব্যবহার করে আপনি TextBox, ComboBox বা অন্যান্য UI উপাদানে ভ্যালিডেশন ইন্টারফেস সংযোগ করতে পারেন।
  • Validation.Errors এবং Validation.ErrorTemplate ব্যবহার করে আপনি ত্রুটি বার্তা UI তে সুন্দরভাবে প্রদর্শন করতে পারেন।
Content added By

Validation Visual Feedback Techniques

213

Validation হল একটি গুরুত্বপূর্ণ প্রক্রিয়া যা ইউজার ইনপুট চেক করতে ব্যবহৃত হয় এবং ব্যবহারকারীদের ইন্টারফেসের মাধ্যমে ইনপুটের ভুল বা অবৈধ তথ্য সম্পর্কে জানানো হয়। XAML এ Validation Visual Feedback Techniques ব্যবহার করে আপনি ইউজারের ইনপুটের সঠিকতা যাচাই করার পাশাপাশি তাদেরকে ভিজ্যুয়ালি ফিডব্যাক দিতে পারেন, যাতে তারা বুঝতে পারে যে ইনপুটে কিছু ভুল রয়েছে বা সঠিকভাবে পূর্ণ হয়নি।

Validation Visual Feedback Techniques এর উদ্দেশ্য

  • ইউজারদের তাদের ইনপুটে ভুল বা অবৈধ তথ্য সম্পর্কে অবহিত করা।
  • ইউজারদের সঠিক ইনপুট প্রদান করতে সাহায্য করা।
  • ইউজার ইন্টারফেসের মাধ্যমে দ্রুত এবং পরিষ্কারভাবে সমস্যা চিহ্নিত করা।

XAML এ Validation Feedback প্রদানের উপায়

XAML এ বিভিন্নভাবে Validation Feedback প্রদানের পদ্ধতি রয়েছে, যেমন:

  • Error Templates এবং ValidationSummary
  • DataAnnotations ব্যবহার
  • Triggers এবং Visual States
  • Error Icon বা Message প্রদর্শন

1. Error Template এবং ValidationSummary

XAML এ ইনপুট কন্ট্রোলগুলির জন্য ErrorTemplate এবং ValidationSummary ব্যবহার করে আপনি সহজেই ভ্যালিডেশন ফিডব্যাক প্রদর্শন করতে পারেন।

ErrorTemplate উদাহরণ:

ErrorTemplate ব্যবহার করে আপনি কাস্টমাইজড ভিজ্যুয়াল ফিডব্যাক তৈরি করতে পারেন যা ভুল ইনপুটের ক্ষেত্রে প্রদর্শিত হবে।

<TextBox Name="EmailTextBox">
    <TextBox.ValidationRules>
        <local:EmailValidationRule />
    </TextBox.ValidationRules>
    <TextBox.Style>
        <Style TargetType="TextBox">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=(Validation.HasError), RelativeSource={RelativeSource Self}}" Value="True">
                    <Setter Property="BorderBrush" Value="Red"/>
                    <Setter Property="BorderThickness" Value="2"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>
</TextBox>
<TextBlock Name="ErrorText" Foreground="Red" Visibility="Collapsed" Text="Invalid email address."/>

এখানে, একটি TextBox কন্ট্রোলের জন্য DataTrigger ব্যবহার করা হয়েছে, যা যদি ইনপুটে কোনো ত্রুটি থাকে, তবে বর্ডারের রঙকে Red এ পরিবর্তিত করবে এবং একটি ErrorText প্রদর্শন করবে।


2. DataAnnotations ব্যবহার করা

DataAnnotations ব্যবহার করে আপনি Validation কাস্টমাইজ করতে পারেন এবং ব্যবহারকারীর ইনপুট যাচাইয়ের জন্য বিভিন্ন বৈধতা নির্ধারণ করতে পারেন। DataAnnotations সাধারণত Binding সহ ব্যবহার করা হয় এবং ভ্যালিডেশন এর ফলাফল UI তে প্রদর্শিত হয়।

DataAnnotations উদাহরণ:

<TextBox Name="NameTextBox" Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}">
    <TextBox.Style>
        <Style TargetType="TextBox">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=(Validation.HasError), RelativeSource={RelativeSource Self}}" Value="True">
                    <Setter Property="BorderBrush" Value="Red"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>
</TextBox>
<TextBlock Name="ValidationErrorText" Foreground="Red" Visibility="Collapsed" Text="{Binding Path=Error}" />

এখানে, TextBox এর জন্য একটি DataTrigger নির্ধারণ করা হয়েছে যা Validation.HasError এর মান চেক করে। যদি ইনপুটে ত্রুটি থাকে, তাহলে BorderBrush রঙ পরিবর্তিত হবে এবং ValidationErrorText টেক্সট ব্লক ত্রুটির বার্তা দেখাবে।

DataAnnotations class:

public class Person
{
    [Required(ErrorMessage = "Name is required.")]
    [StringLength(100, ErrorMessage = "Name cannot be longer than 100 characters.")]
    public string Name { get; set; }
}

এখানে, Name প্রোপার্টির জন্য Required এবং StringLength অ্যাট্রিবিউট ব্যবহৃত হয়েছে যা ইনপুট ভ্যালিডেশন চেক করবে।


3. Triggers এবং Visual States

XAML এ Triggers এবং Visual States ব্যবহার করে আপনি ইউজারের ইনপুটের ভিত্তিতে ভিজ্যুয়াল ফিডব্যাক প্রদর্শন করতে পারেন। VisualStateManager এর মাধ্যমে বিভিন্ন Visual States নির্ধারণ করে, UI উপাদানগুলো পরিবর্তিত হতে পারে, যেমন ইনপুট সঠিক হলে নরমাল স্টেটে ফিরে আসবে, এবং ভুল ইনপুটে Error স্টেটে যাবে।

Visual State Manager উদাহরণ:

<Button Content="Submit" Width="100" Height="40">
    <Button.Template>
        <ControlTemplate TargetType="Button">
            <Grid>
                <VisualStateManager.VisualStateGroups>
                    <VisualStateGroup x:Name="CommonStates">
                        <VisualState x:Name="Normal">
                            <Storyboard>
                                <ColorAnimation Storyboard.TargetProperty="(Button.Background).(SolidColorBrush.Color)"
                                                To="LightGreen" Duration="0:0:0.2"/>
                            </Storyboard>
                        </VisualState>
                        <VisualState x:Name="Disabled">
                            <Storyboard>
                                <ColorAnimation Storyboard.TargetProperty="(Button.Background).(SolidColorBrush.Color)"
                                                To="Gray" Duration="0:0:0.2"/>
                            </Storyboard>
                        </VisualState>
                        <VisualState x:Name="Error">
                            <Storyboard>
                                <ColorAnimation Storyboard.TargetProperty="(Button.Background).(SolidColorBrush.Color)"
                                                To="Red" Duration="0:0:0.2"/>
                            </Storyboard>
                        </VisualState>
                    </VisualStateGroup>
                </VisualStateManager.VisualStateGroups>
                <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
            </Grid>
        </ControlTemplate>
    </Button.Template>
</Button>

এখানে, VisualStateManager এর মাধ্যমে বাটনের বিভিন্ন অবস্থান যেমন Normal, Disabled, এবং Error স্টেট তৈরি করা হয়েছে। Error অবস্থায় বাটনের ব্যাকগ্রাউন্ড রঙ রেড হয়ে যাবে।


4. Error Icon বা Message প্রদর্শন

অনেক সময়, একটি ইরর আইকন বা মেসেজ প্রদর্শন করা হয় যাতে ব্যবহারকারী সঠিক ইনপুট প্রদান করতে পারে। এ জন্য আপনি ToolTip বা ImageBrush ব্যবহার করে ইরর আইকন বা বার্তা দেখাতে পারেন।

Error Icon প্রদর্শন:

<TextBox Name="UserNameTextBox">
    <TextBox.Style>
        <Style TargetType="TextBox">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=(Validation.HasError), RelativeSource={RelativeSource Self}}" Value="True">
                    <Setter Property="ToolTip" Value="Invalid username"/>
                    <Setter Property="BorderBrush" Value="Red"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>
</TextBox>

এখানে, ToolTip ব্যবহার করা হয়েছে যাতে ব্যবহারকারী ভুল ইনপুট দিলে "Invalid username" মেসেজটি টুলটিপ হিসেবে প্রদর্শিত হয়।


সারসংক্ষেপ

Validation Visual Feedback Techniques ব্যবহার করে আপনি XAML এ ব্যবহারকারীদের ইনপুটের সঠিকতা যাচাই করতে এবং তাদের সঠিক তথ্য প্রদানে সহায়তা করতে পারেন। Error Templates, DataAnnotations, Visual States, এবং Triggers ব্যবহার করে আপনি দ্রুত এবং স্পষ্টভাবে ইনপুট ত্রুটি প্রদর্শন করতে পারেন, যা ইউজার ইন্টারফেসের অভিজ্ঞতা উন্নত করে।

Content added By
Promotion

Are you sure to start over?

Loading...