আমি ডাব্লুপিএফ এবং এমভিভিএম সমস্যা শেখার চেষ্টা করছি, তবে একটি ছটফট করেছি। এই প্রশ্নটি অনুরূপ তবে এইটির মতো একরকম নয় (এমভিভিএম-এর সাথে ডাব্লুপিএফ-এ হ্যান্ডলিং-ডায়লগ) ...
আমার এমভিভিএম প্যাটার্নটি ব্যবহার করে একটি "লগইন" ফর্ম লেখা আছে।
এই ফর্মটিতে একটি ভিউমোডেল রয়েছে যা ব্যবহারকারীর নাম এবং পাসওয়ার্ড ধারণ করে, যা সাধারণ ডেটা বাইন্ডিং ব্যবহার করে এক্সএএমএল-এ দৃশ্যের সাথে আবদ্ধ। এটিতে একটি "লগইন" কমান্ড রয়েছে যা ফর্মের "লগইন" বোতামের সাথে আবদ্ধ, সাধারণ ডাটাবেইন্ডিং ব্যবহার করে আগান।
যখন "লগইন" কমান্ডটি চালিত হয়, এটি ভিউমোডেলে একটি ফাংশনকে আহ্বান করে যা বন্ধ হয়ে যায় এবং লগ ইন করার জন্য নেটওয়ার্কের মাধ্যমে ডেটা প্রেরণ করে this যখন এই ফাংশনটি সম্পূর্ণ হয়, তখন 2 টি ক্রিয়া হয়:
লগইনটি অবৈধ ছিল - আমরা কেবল একটি বার্তাবক্স দেখাই এবং সব ঠিক আছে
লগইনটি বৈধ ছিল, আমাদের লগইন ফর্মটি বন্ধ করতে হবে এবং এটির হিসাবে এটি সত্য হওয়া উচিত
DialogResult
...
সমস্যাটি হল, ভিউমোডেল প্রকৃত দৃশ্য সম্পর্কে কিছুই জানে না, সুতরাং এটি কীভাবে দৃষ্টিভঙ্গিটি বন্ধ করে নির্দিষ্ট ডায়ালগ রিসাল্ট ফিরে আসতে বলবে ?? আমি কোডবিহিন্ডে কিছু কোড আটকে রাখতে পারি, এবং / অথবা ভিউমোডেলের কাছে ভিউটি পাস করতে পারি, তবে মনে হয় এটি এমভিভিএমের পুরো পয়েন্টকে পুরোপুরি পরাস্ত করবে ...
হালনাগাদ
শেষ পর্যন্ত আমি কেবল এমভিভিএম প্যাটার্নের "বিশুদ্ধতা" লঙ্ঘন করেছি এবং ভিউটি একটি Closed
ইভেন্ট প্রকাশ করেছে এবং একটি Close
পদ্ধতি প্রকাশ করেছি । ভিউমোডেল তখন কেবল কল করবে view.Close
। ভিউটি কেবলমাত্র একটি ইন্টারফেসের মাধ্যমে পরিচিত এবং আইওসি ধারকটির মাধ্যমে তারযুক্ত হয়, তাই কোনও পরীক্ষারযোগ্যতা বা রক্ষণাবেক্ষণযোগ্যতা হারাবে না।
এটি বরং নির্বোধ বলে মনে হয় যে গৃহীত উত্তরটি -5 ভোটে! আমি যখন "শুদ্ধ" হওয়ার সময় সমস্যার সমাধান করে যে ভাল অনুভূতি সম্পর্কে ভালভাবে অবগত আছি তখন অবশ্যই আমি একা নই যে 200 লাইনের ইভেন্ট, কমান্ড এবং আচরণের একটি লাইন পদ্ধতি এড়াতে কেবল এটিই মনে করে "নিদর্শন" এবং "বিশুদ্ধতা" এর নামটি কিছুটা হাস্যকর ....
Close
পদ্ধতি এখনও সর্বোত্তম সমাধান। অন্যান্য জটিল জটিল সংলাপগুলির সমস্ত কিছুই এমভিভিএম এবং ডাটাবাউন্ড, তবে কেবল একটি সাধারণ পদ্ধতির পরিবর্তে বিশাল "সমাধানগুলি" প্রয়োগ করা কেবল নির্বোধ বলে মনে হয়েছিল ...