নির্ভরতা সম্পত্তি কী?


136

নেট মধ্যে একটি নির্ভরতা সম্পত্তি কি (বিশেষত ডাব্লুপিএফ প্রসঙ্গে)। নিয়মিত সম্পত্তি থেকে কি পার্থক্য?

উত্তর:


94

নির্ভরতা বৈশিষ্ট্যগুলি ডিপেন্ডেন্সিঅবজেক্ট থেকে প্রাপ্ত ক্লাসগুলির বৈশিষ্ট্য এবং এগুলিতে তারা বিশেষভাবে তাদের মান সংরক্ষণ করার জন্য কোনও ব্যাকিং ফিল্ড ব্যবহার না করে DependencyObject- এ কিছু সহায়ক পদ্ধতি ব্যবহার করে।

তাদের সম্পর্কে সর্বোত্তম জিনিসটি হ'ল ডেটা বাইন্ডিং অন্তর্নিহিত করার জন্য তাদের কাছে সমস্ত প্লাম্বিং রয়েছে you আপনি যদি তাদের কাছে কিছু বাঁধেন, তারা পরিবর্তিত হলে তারা এটিকে অবহিত করবেন।


36
নির্ভরতা সম্পত্তি কী করতে পারে বা কেন এটি বিদ্যমান তা সম্পর্কে এখনও তা আমাকে খুব সামান্যই বলে। আপনি তাদের সবচেয়ে মূল্যবান সম্পত্তি, উপাদান গাছ আপ মান মান উল্লেখ কিছুই।
অধ্যাপক

হাই @ ম্যাটহ্যামিলটন আপনার উত্তরের জন্য আপনাকে ধন্যবাদ - তবে "তারা DependencyObject- এ কিছু সহায়ক পদ্ধতি ব্যবহার করে" বলতে কী বোঝায়?
বিকেএসপুরজন

2
@ বি কেএসপুরজেন ডিপেন্ডেন্সিঅবজেক্টের "সেটভ্যালু" এবং "গেটভ্যালু" এর মতো কিছু পদ্ধতি রয়েছে যা আপনি ব্যাকিং ফিল্ড ব্যবহার না করে নির্ভরতার সম্পত্তিটির মান বাঁচাতে / পড়ার জন্য কল করেন।
ম্যাট হ্যামিল্টন

91

আমি সহায়ক এবং ভাল লিখিত একমাত্র ব্যাখ্যাটি হ'ল: http://www.wpftutorial.net/d dependencyproperties.html

মূলত, DependencyProperties নিয়মিত বৈশিষ্ট্যগুলির থেকে পৃথক যে তারা ক্লাসে ক্ষেত্রের জন্য কেবল সেটার / গেটরই নয়, রানটাইমের সময় তারা তাদের আসল মানগুলি গতিশীলভাবে পুনরুদ্ধার করে। SetValue()ডিপি পদ্ধতি প্রশংসনীয় সহজবোধ্য এবং মান আপনি এটি দিয়েছে করার সম্পত্তি স্থানীয় মান সেট করে। যাইহোক, আপনি যখন GetValue()কোনও DependencyProperty থেকে চেষ্টা করবেন , এটি প্রথমে একটি স্থানীয় মান সন্ধান করবে, যদি কোনও উপস্থিত না থাকে (যা নিয়মিত বৈশিষ্ট্যের বিপরীতে ডিপেন্ডেন্সিপোপার্টিগুলিতে কার্যকর) এটি তাত্ত্বিক UI গাছটিকে অবিরত রাখবে যতক্ষণ না এটি এরূপ মান খুঁজে পায়। যদি কোনও স্থানীয় মান খুঁজে না পেয়ে ফ্রেমওয়ার্কটি গাছের শীর্ষে পৌঁছে যায়, তবে এটি সম্পত্তির মান হিসাবে একটি পূর্বনির্ধারিত ডিফল্ট মান ব্যবহার করবে।

এই পদ্ধতিটি ডিপেন্ডেন্সিপ্রেটিসগুলিকে নিয়মিত বৈশিষ্ট্যের চেয়ে কম মেমোরি গ্রহণ করতে দেয় কারণ কেবলমাত্র ব্যবহারকারী দ্বারা নির্ধারিত মানগুলি স্থানীয়ভাবে সংরক্ষণ করা হবে।

এবং, উপরে উল্লিখিত হিসাবে, DependencyProperties এছাড়াও তাদের XAML কোডে আবদ্ধ করতে এবং সেগুলিতে ট্রিগার সেট করতে দেয় যা নিয়মিত বৈশিষ্ট্যগুলিতে অনুমোদিত নয়।

আমি আশা করি আমি কিছু অস্পষ্টতা সাফ করতে পেরেছি :)


2
এবং একটি "সংযুক্ত সম্পত্তি" কী?
পল-সেবাস্তিয়ান মানোলে

12
একটি সংযুক্ত সম্পত্তি হ'ল এমন একটি সম্পত্তি যা বর্তমান আইটেমের সাথে সম্পর্কিত নয় যা ঘোষিত হচ্ছে তবে এটি অন্য কোনও বস্তুকে প্রভাবিত করে। উদাহরণস্বরূপ: Grid.Row="1"একটি Buttonএটা পিতা বা মাতা উপর সারি # 2 হতে সেট হবে Grid(যে সারি হয় আসলে কারণে শূন্য ভিত্তিক) কিন্তু RowDependencyProperty জন্যে Gridঅবজেক্ট।
জোনাথন পেরি

2
আপনি যখন বলেছিলেন DependencyProperties also allow us to bind to them in the XAML code and set triggers on them, which on regular properties is not allowed, আপনি কি XAML এ বাঁধাই এবং ট্রিগার সেট বা কেবল ট্রিগার সেট করা উভয়ই অনুমোদিত নন। বিষয়গুলি আরও পরিষ্কার করে ফলোআপ এবং সহায়তা করার জন্য ধন্যবাদ!
পল-সেবাস্তিয়ান মানোলে

@ পল-সেবাস্তিয়ান ম্যানোল ডেটা ট্রিজাররা নিয়মিত সম্পত্তিগুলিতেও কাজ করে। আসুন ধরা যাক আপনার Value0 মান সহ একটি সম্পত্তি রয়েছে (ডিপি নয়) এবং আপনি Value1 পরিবর্তন করার সময় আপনার দৃষ্টিভঙ্গি কিছু করতে চান আপনি এইভাবে ব্যবহার করতে DataTriggerএবং সেটিংস করতে সক্ষম হবেনBinding={Binding Path=Value, Value=1}
জোনাথন পেরি

36

http://techpunch.wordpress.com/2008/09/25/wpf-wf-what-is-a-dependency-property/ উভয় ডব্লিউ এফ এবং WPF প্রেক্ষাপটে নির্ভরতা বৈশিষ্ট্য একটি ভাল ব্যাখ্যা প্রদান করে।

একটি অংশ:

মূল পয়েন্ট - নির্ভরতা বৈশিষ্ট্যের মান সমাধান করা হয়

নির্ভরতা সম্পত্তি চূড়ান্ত লক্ষ্য, যে কোনও সম্পত্তির মতো, রাষ্ট্র পরিচালনা করা। তবে সাধারণ। নেট বৈশিষ্ট্যগুলির বিপরীতে, স্থানীয় সম্পত্তি মান একটি উদাহরণ ভেরিয়েবলে সংরক্ষণ করা হয় না।

পরিবর্তে, নির্ভরতা সম্পত্তি নির্ভরতা সম্পত্তি কাঠামোর সাথে নিবন্ধিত হয়, এবং অন্তর্নিহিত সম্পত্তি মান সমাধান করা হয় - যার অর্থ সম্পত্তি নিবন্ধকরণের দ্বারা নির্ধারিত নিয়মের উপর নির্ভরশীলতা সম্পত্তি কাঠামোর দ্বারা মূল্য নির্ধারণ করা হয়।

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