উইনফর্ম অ্যাপ্লিকেশনটিতে আপনি যুক্তি থেকে কীভাবে পৃথক করবেন?


18

আমি জানি এমভিসি এর মতো নিদর্শনগুলি যুক্তি থেকে পৃথক করার জন্য রয়েছে তবে যাইহোক, উইনফর্ম অ্যাপ্লিকেশনগুলিতে তারা কতটা সাধারণ তা আমি জানি না।

সি # উইনফর্ম অ্যাপ্লিকেশনটির জন্য, আমি একটি দিয়ে শুরু করতে Formএবং ধীরে ধীরে এটিতে ইউআই উপাদান যুক্ত করতে পারি, তারপরে উপাদানগুলির ইভেন্টগুলির জন্য, ( click, textchanged...) আমি আমার ফাংশনগুলি কল করি, বা আমার যুক্তিটি সেখানে সরাসরি লিখি!

আমি জানি এটি একটি খারাপ অভ্যাস, তবে আমি জানি না ভিজ্যুয়াল স্টুডিওতে (কোনও টেম্পলেট, একটি কাঠামো, শুরুর পয়েন্ট) এই জাতীয় প্রকল্প শুরু করার সবচেয়ে ভাল উপায় কী, এমভিসি কি একমাত্র সমাধান? আমি কোন প্রকল্পের জন্য এটি করা উচিত ?!

আমি শুরু করতে কিছু গাইডলাইন বা লাইটওয়েট ফ্রেমওয়ার্ক পেতে চাই।


2
আপনি যা খুঁজছেন তার জন্য এখানে একটি সম্পূর্ণ টিউটোরিয়াল দেওয়া হয়েছে: কোডবেটার.com
ডক ব্রাউন

উত্তর:


25

এমভিভিএম (মডেল-ভিউ-ভিউমোডেল) প্যাটার্নটি ব্যবহার করা যেতে পারে Winforms

মডেল

public class Person
{
    public string FirstName {get; set;}
    public string LastName {get; set;}
}

ViewModel

public class PersonViewModel : INotifyPropertyChanged
{
    private Person _Model;

    public string FirstName
    {
        get { return _Model.FirstName; }
        set(string value)
        {
            _Model.FirstName = value;
            this.NotifyPropertyChanged("FirstName");
            this.NotifyPropertyChanged("FullName"); //Inform View about value changed
        }
    }

    public string LastName
    {
        get { return _Model.LastName; }
        set(string value)
        {
            _Model.LastName = value;
            this.NotifyPropertyChanged("LastName");
            this.NotifyPropertyChanged("FullName");
        }
    }

    //ViewModel can contain property which serves view
    //For example: FullName not necessary in the Model  
    public String FullName
    {
        get { return _Model.FirstName + " " +  _Model.LastName; }
    }

    //Implementing INotifyPropertyChanged
    public event PropertyChangedEventHandler PropertyChanged;

    private void NotifyPropertyChanged(String info)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(info));
        }
    }
}

দৃশ্য

public class PersonView: Form
{
    //Add two textbox and one label to the form
    //Add BindingSource control which will handle 
    //ViewModel and Views controls changes


    //As viewmodel you can use any type which of course have same named properties
    public PersonView(Object viewmodel)
    {
        this.InitializeComponents();

        this.ViewModelBindingSource.DataSource = viewmodel;
        this.InitializeDataBindings();
    }

    private void InitializeDataBindings()
    {
        this.TextBoxFirstName.DataBindings.Add("Text", this.ViewModelBindingSource, "FirstName", true);
        this.TextBoxLastName.DataBindings.Add("Text", this.ViewModelBindingSource, "LastName", true);
        this.LabelFullName.DataBindings.Add("Text", this.ViewModelBindingSource, "FullName", true);
    }
}

এমএসডিএন থেকে উইনফর্মগুলিতে ডেটাবাইন্ডিং সম্পর্কে আরও পড়ুন


0

স্পষ্টতই উইনফর্মগুলি অন্যের জন্য একটি নকশার প্যাটার্নটি নেটিভালি সমর্থন করে না - যেটি কাজ করতে পারে না তা হ'ল এমভিভিএম কারণ আপনি ভিউ মডেলটিতে ডেটা "বাঁধাই" করতে পারবেন না এবং সরাসরি ডেটা আপডেট করতে পারেন।

অন্যথায় - আমি এমভিপি দিয়ে উইনফর্মগুলি চেষ্টা করব - আমি এটি আগে দেখেছি - https://winformsmvp.codeplex.com/ এ দেখার জন্য একটি লিঙ্ক এখানে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.