ডাব্লুপিএফ টেম্পলেট বাইন্ডিং বনাম রিলেটিভসোর্স টেম্পলেটেড প্যারেন্ট


169

এই 2 বাইন্ডিংয়ের মধ্যে পার্থক্য কী :

<ControlTemplate TargetType="{x:Type Button}">
   <Border BorderBrush="{TemplateBinding Property=Background}">
      <ContentPresenter />
   </Border>
</ControlTemplate>

এবং

<ControlTemplate TargetType="{x:Type Button}">
   <Border BorderBrush="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Background}">
      <ContentPresenter />
   </Border>
</ControlTemplate>

?


17
আপনার যদি টুওয়ে বাইন্ডিংয়ের দরকার হয় তবে আপনি দ্বিতীয় বিকল্পটি ব্যবহার করতে হবে
জোয়াকিম কার্শবাউমার

উত্তর:


207

টেমপ্লেট বাইন্ডিং বেশ একই জিনিস নয়। এমএসডিএন ডকসগুলি প্রায়শই লোকেরা লিখে থাকে যেগুলি সফ্টওয়্যার বৈশিষ্ট্যগুলি সম্পর্কে মনসিলাব্লিক এসডিইতে কুইজ করতে হয়, তাই সংক্ষিপ্ততাগুলি ঠিক ঠিক হয় না।

কন্ট্রোল টেমপ্লেটে নির্দিষ্ট ধরণের বিপরীতে সংকলন সময়ে টেমপ্লেটবাইন্ডিংগুলি মূল্যায়ন করা হয়। এটি সঙ্কলিত টেম্পলেটগুলির আরও দ্রুত ইনস্ট্যান্টেশন করার অনুমতি দেয়। কেবলমাত্র একটি টেম্পলেটবাইন্ডিংয়ে নামটি ফাঁপা করুন এবং আপনি দেখতে পাবেন যে সংকলকটি এটি ফ্ল্যাগ করবে।

বাইন্ডিং মার্কআপ রানটাইমে সমাধান করা হয়। কার্যকর করতে ধীর হওয়ার সময়, এই বাধ্যতামূলক বৈশিষ্ট্যগুলির নামগুলি সমাধান করবে যা টেমপ্লেট দ্বারা ঘোষিত ধরণে দৃশ্যমান নয়। ধীরে ধীরে, আমি উল্লেখ করব যে এর ধরণের সম্পর্কযুক্ত যেহেতু বাইন্ডিং অপারেশন অ্যাপ্লিকেশনটির সিপিইউ খুব কম নেয় very আপনি যদি উচ্চ গতিতে চারপাশে নিয়ন্ত্রণের টেম্পলেটগুলি ব্লাস্ট করে রাখছিলেন তবে আপনি এটি লক্ষ্য করতে পারেন।

অনুশীলনের বিষয় হিসাবে টেম্পলেট বাইন্ডিংটি ব্যবহার করুন যখন আপনি বাঁধাইয়ের ভয় পাবেন না।


18
তাই মনে রাখার জন্য প্রধান ভাবনা: রানটাইম বনাম টাইপ করুন। রানটাইমের সময় আপনি যদি এটি পরিবর্তন করার চেষ্টা করেন তবে টেম্পলেট বাইন্ডিং কাজ করবে না। ঠিক?
PaN1C_Showt1

3
এছাড়াও নোট করুন যে টেম্পলেট বাইন্ডিংয়ের পরিবর্তে বাইন্ডিং ব্যবহারের ফলে ডিজাইনের সময় আপনি কী দেখেন সে সম্পর্কে প্রভাব ফেলতে পারে। নির্দিষ্ট কনফিগারেশনে, properties বাঁধাই সম্পর্কিত সম্পর্কিত উত্স ... using ব্যবহার করে আবদ্ধ হওয়া বৈশিষ্ট্যগুলি ডিজাইনারে উপস্থিত হবে না (যদিও তারা রান চলাকালীন সময়ে প্রদর্শিত হবে), তবে আপনি যদি {টেমপ্লেটবাইন্ডিং ... using ব্যবহার করতে স্যুইচ করেন তবে সেই বৈশিষ্ট্যগুলি মূল্যায়ন করা হয় ডিজাইনের সময়।
lfalin

ভবিষ্যতে দর্শনার্থীদের সহায়তা করার ক্ষেত্রে আমি একটি জিনিস যুক্ত করব তা হ'ল টেমপ্লেইন্ডিং সংকলনের সময় মূল্যায়ন করা হয় আপনি কোনও সংজ্ঞায়িত সংযুক্ত সম্পত্তির সাথে বাঁধার জন্য টেমপ্লেইন্ডিং ব্যবহার করতে পারবেন না। ব্যবহারকারীর সংজ্ঞায়িত সংযুক্ত বৈশিষ্ট্যের ক্ষেত্রে, আপনাকে অবশ্যই "inding বাঁধাই সম্পর্কিত সম্পর্কিত উত্স = {আপেক্ষিক
উত্স টেম্প্লেটেড প্যারেন্ট

35

টেমপ্লেট বাইন্ডিং - নিয়মিত বাইন্ডিং ব্যবহারের চেয়ে আরও সীমাবদ্ধ

  • একটি বাঁধার চেয়ে আরও কার্যকর তবে এর কার্যকারিতা কম
  • কেবল একটি কন্ট্রোল টেম্পলেটটির ভিজ্যুয়াল ট্রি এর মধ্যে কাজ করে
  • ফ্রিজেবলে সম্পত্তি নিয়ে কাজ করে না
  • একটি কন্ট্রোল টেম্পলেট এর ট্রিগার মধ্যে কাজ করে না
  • বৈশিষ্ট্য নির্ধারণে শর্টকাট সরবরাহ করে (ভার্বোজ হিসাবে নয়), যেমন {টেমপ্লেবাইন্ডিং টার্গেটপ্রোপার্টি}

নিয়মিত বাঁধাই - টেমপ্লেট বাইন্ডিংয়ের উপরের সীমাবদ্ধতা নেই

  • প্যারেন্ট প্রোপার্টিগুলিকে সম্মান করে
  • নির্দিষ্টভাবে নির্ধারিত মানগুলি পরিষ্কার করতে লক্ষ্য মানগুলি পুনরায় সেট করে
  • উদাহরণ: <উপবৃত্ত ভরাট = "inding আপেক্ষিক উত্স বাঁধাই = la আপেক্ষিক উত্স টেম্প্লেটেড প্যারেন্ট}, পথ = ব্যাকগ্রাউন্ড}" />

22

আরও একটি জিনিস - টেম্পলেটবাইন্ডিংগুলি মান রূপান্তর করতে দেয় না। তারা আপনাকে কোনও রূপান্তরকারী পাস করার অনুমতি দেয় না এবং স্বয়ংক্রিয়ভাবে উদাহরণস্বরূপ স্ট্রিং-তে int রূপান্তর করে না (যা একটি বাঁধার জন্য স্বাভাবিক)।


1
ধন্যবাদ মিরোস্লাভ, এই সমস্যাটিই আমার মুখোমুখি হয়েছিল, টেম্পলেটড প্যারেন্ট ব্যবহার করে স্যুইচ করা সমস্যার সমাধান করেছে।
মাইককুলস

17

টেম্পলেটবাইন্ডিং টেম্পলেটেড প্যারেন্টের সাথে বাঁধার জন্য একটি শর্টহ্যান্ড তবে এটি বাইন্ডিং ক্লাসের সমস্ত ক্ষমতা প্রকাশ করে না, উদাহরণস্বরূপ আপনি টেমপ্লেইন্ডিং থেকে বাঁধাই নিয়ন্ত্রণ করতে পারবেন না ode


1

আমি ভেবেছিলাম টেমপ্লেট বাইন্ডিং ফ্রিজযোগ্য প্রকারগুলি সমর্থন করে না (যার মধ্যে ব্রাশের সামগ্রী অন্তর্ভুক্ত রয়েছে)। সমস্যা কাছাকাছি পেতে। টেম্প্লেটেড প্যারেন্ট ব্যবহার করতে পারেন


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