বনাম বাঁধাই টেমপ্লেট কী?


118

বুঝতে পারি না BorderThickness="{TemplateBinding BorderThickness}। এখানে কোড:

<ControlTemplate TargetType="{x:Type wpftoolkit:DataGridCell}">
    <Border Padding="{TemplateBinding Padding}" 
            BorderBrush="{TemplateBinding BorderBrush}" 
            BorderThickness="{TemplateBinding BorderThickness}" 
            Background="{TemplateBinding Background}" 
            SnapsToDevicePixels="True">
        <ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
    </Border>
</ControlTemplate>

এছাড়াও দয়া করে বাঁধাইয়ের অন্যান্য ধরণের ব্যাখ্যা করুন।


কেন এই প্রত্যাবর্তন এবং কেন বর্ডারথিকনেস দু'বার লিখুন "" "বর্ডারটিকনেস =" {টেমপ্লেবন্ডিং বর্ডারটিকনেস} "" "
prjndhi

1
@ উওফোরিক এই পৃষ্ঠাটিকে কোয়েরির জন্য প্রথম গুগল ফলাফল বলে মনে হচ্ছে। ;)
এভিনিস

উত্তর:


204

টেমপ্লেট সংজ্ঞাটি টেমপ্লেট সংজ্ঞাতে উপাদান বৈশিষ্ট্যের সাথে আবদ্ধ করার জন্য ব্যবহৃত হয়। আপনার উদাহরণে, আপনি লিখতে পারে

 <Border Padding="{Binding Padding}" ...>

এর অর্থ সীমান্তের প্যাডিং সম্পত্তির প্যাডিং সম্পত্তিকে আবদ্ধ করার অর্থ ... কী? আপনি বলতে চাইবেন, "এই টেমপ্লেটটি যে নিয়ন্ত্রণের জন্য ব্যবহৃত হচ্ছে তার প্যাডিং সম্পত্তি" " আপনি এটিকে একটি নাম দিতে পারবেন না কারণ আপনি x জানেন না: এই সময়ে নিয়ন্ত্রণের নাম (এমনকি যদি আপনি তা করেন তবে এটি কাজ করবে না কারণ এটি একটি আলাদা নেমস্কোপে রয়েছে)। তবে, আপনি কোনও আপেক্ষিক উত্স নির্ধারণ করে এটি করতে পারেন

<Border Padding="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}" ...>

বা উপরের জন্য টেমপ্লেট বাইন্ডিং যা একটি শর্টকাট (*)

<Border Padding="{TemplateBinding Padding}" ...>

(*) এই টেম্প্লেটিং পরিস্থিতিগুলিতে কম ভার্বোস হওয়ার পাশাপাশি, টেমপ্লেইন্ডিংয়ের নিয়মিত বাইন্ডিংয়ের তুলনায় কয়েকটি পার্থক্য রয়েছে:

  • সংকলন সময়ে এটি মূল্যায়ন করা হয়। (যদি উদাহরণস্বরূপ, প্যাডিংয়ের সম্পত্তিটি না থাকলে আপনি একটি সংকলন ত্রুটি পাবেন But
  • এটি সর্বদা একমুখী বাধ্যতামূলক।
  • এটি প্রয়োজন যে উত্স এবং লক্ষ্য বৈশিষ্ট্য উভয়ই নির্ভরতার বৈশিষ্ট্য
  • এটা অনেক কম কার্যকারিতা (কোন StringFormat, বিলম্ব IsAsync, ইত্যাদি .. বৈশিষ্ট্য দেখতে হয়েছে বাঁধাই বনাম TemplateBindingExtention )।

58

একটি ছবি হাজার শব্দের সমান. এক্ষেত্রে এটি 7 মিনিটের ভিডিও: https://www.youtube.com/watch?v=z-0TZR-7xLI

সম্পাদনা: উদাহরণ:

  • Buttonএর একটি ডিফল্ট ControlTemplateসম্পত্তি এবং Heightসম্পত্তি রয়েছে
  • আপনি নিজের লেখার মাধ্যমে কোনওটির ControlTemplateসম্পত্তিটিকে ওভাররাইড করে Button(উদাহরণস্বরূপ আপনি Ellipse-লুকিংয়ের পরিবর্তে একটি লকিং বোতাম তৈরি করতে চান Rectangle)
  • পরে আপনি একটি তৈরি Ellipseআপনার নতুন ControlTemplate, যদি আপনি চান Ellipseমূল বাটন এর মত একই আকারের হতে Heightসম্পত্তি
  • তাই আপনি ব্যবহার TemplateBindingরেফারেন্স করার জন্য Button's Heightএটা নামকরণ ছাড়াএখানে চিত্র বর্ণনা লিখুন

যতক্ষণ এই তাত্ত্বিক প্রশ্নের উত্তর হতে পারে, এটা বাঞ্ছনীয় হবে উত্তর অপরিহার্য অংশের এখানে অন্তর্ভুক্ত করা, এবং রেফারেন্স এর জন্য লিঙ্ক প্রদান।
ভার্গব রাও

32

এরেন এরসানমেঞ্জ ইতিমধ্যে এটি বেশ ভালভাবে ব্যাখ্যা করেছেন, তবে আমি ধারণাটি আরও ভালভাবে বুঝতে আরও একটি দৃষ্টিকোণ দিতে চাই।

ডাব্লুপিএফ-তে প্রতিটি নিয়ন্ত্রণ কমপক্ষে তার উপস্থাপনা থেকে আলাদা থাকে। আপনি সর্বদা নিয়ন্ত্রণের টেমপ্লেট পরিবর্তন করতে এবং এটি সম্পূর্ণ আলাদা দেখায়। একটি বোতাম উদাহরণস্বরূপ ControlTemplateকেবলমাত্র সমন্বিত সহ প্রত্যাশা অনুযায়ী কাজ করে Rectangle। এখন কখনও কখনও এটি ControlTemplateনিয়ন্ত্রণের লজিক অংশের বৈশিষ্ট্যগুলিকে ব্যবহার করা প্রয়োজন । এবং TemplateBindingএটির জন্য যা রয়েছে তা কেবল ControlTemplate"" আমরা ভিজ্যুয়াল উপস্থাপনা দিচ্ছি নিয়ন্ত্রণের এই সম্পত্তিটি ব্যবহার করুন " বলে tells একটি ভাল উদাহরণ হ'ল Backgroundপ্রতিটি নিয়ন্ত্রণের সম্পত্তি, এর নিজস্ব কোনও অর্থ হয় না, এটির মাধ্যমে TemplateBindingএটি শিশু নিয়ন্ত্রণের দ্বারা এর অর্থ পায় ControlTemplate

এমএসডিএন- তে নিজের উপর বাঁধাই করা খুব ভাল বর্ণিত । এটি একটি খুব সুন্দর ঠকানো শীট যা আসলে আমার পাশে আমার দেয়ালে ঝুলছে। এটি উপলব্ধ সমস্ত বিভিন্ন বাইন্ডিংয়ের একটি ভাল ওভারভিউ দেয়।


6

থেকে TemplateBinding মার্কআপ এক্সটেনশন , TemplateBindingটেমপ্লেট করা নিয়ন্ত্রণ কিছু অন্যান্য উদ্ভাসিত সম্পত্তির মান একটি নিয়ন্ত্রণ টেমপ্লেটে সম্পত্তির মূল্য সংযোগ করে। অন্য কথায়, এটি কোনও টেমপ্লেটে বাঁধার মানগুলির জন্য।

বাঁধাই বাঁধাই করা লক্ষ্যগুলি এবং ডেটা উত্সগুলির একটি সম্পত্তিকে সংযুক্ত করে।

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