Generic.xaml সম্পর্কে এত বিশেষ কী?


153

আমি আমার দলের অন্যান্য সদস্যদের সাথে পুনঃব্যবহার এবং ভাগ করে নেওয়ার জন্য কীভাবে আমার রিসোর্স অভিধান অভিধানগুলি সংগঠিত করতে পারি তা চেষ্টা করার চেষ্টা করছি to

আমি "Generic.xaml" জুড়ে আসতেই থাকি, তবে আমি যদি Generic.xaml এর জন্য এমএসডিএন দেখি বা কেবল একটি গুগল অনুসন্ধান করি তবে আমি কেবল ব্লগের পোস্ট এবং ফোরামের প্রশ্নগুলি পেয়েছি যা উল্লেখ করার জন্য পেয়েছে - আমি মনে করি না সত্যিই প্রামাণিক এবং পরিষ্কার কিছু হিট।

জেনেরিক.এক্সএএমএল এবং মাইআরডমলিএনমেড রিসোর্সডোরিয়াস.এক্সএএমএল এর মধ্যে পার্থক্য কী? এটি উভয় উপায়েই মনে হচ্ছে, আমাকে উত্স বৈশিষ্ট্যের সাথে লাইব্রেরিতে সঞ্চিত রিসোর্সডোরিওরিয়ান্সগুলি উল্লেখ করতে হবে। যেমন ,:

<Application.Resources>
    <ResourceDictionary
        Source="/CommonLibraryWpfThemes;component/Themes/Generic.xaml"
</Application.Resources>

তাহলে Generic.xaml ঠিক কী সুবিধা দেয়? আমি যদি আমার অ্যাপ্লিকেশনটিকে একাধিক "চেহারা" দেওয়ার চেষ্টা না করে (তবে, যদি আমার কেবল একটি থিম থাকে) তবে এর কোনও উদ্দেশ্য আছে কি?


6
আপনি যদি কাস্টম নিয়ন্ত্রণ (ব্যবহারকারীর নিয়ন্ত্রণের বিপরীতে) দিয়ে এটি ব্যবহার করেন তবে আপনার কোডটিতে জেনেরিক.এক্সএএমএল অভিধানটি মার্জ করার দরকার নেই।
শাশ্বত 21

উত্তর:


152

ডাব্লুপিএফ-এর প্রতিটি কন্ট্রোলের একটি ডিফল্ট স্টাইল থাকে যা অন্যান্য বিষয়গুলির মধ্যেও নিয়ন্ত্রণের ডিফল্ট সরবরাহ করে ControlTemplate। ডাব্লুপিএফ নিয়ন্ত্রণ হিসাবে একই সমাবেশে থিমস ফোল্ডারে একটি বিশেষ সংস্থান অভিধানে ডিফল্ট শৈলীর সন্ধান করে। ডিফল্ট শৈলীর জন্য কী Control.DefaultStyleKeyনির্ভরতা সম্পত্তি সরবরাহ করে, যার ডিফল্ট মান নিয়ন্ত্রণের প্রতিটি উপ-শ্রেণিতে ওভাররাইড হয়।

রিসোর্স ডিকশনারির নামটি বর্তমান উইন্ডোজ থিমের উপর নির্ভর করে যেমন ভিস্তার উপর অ্যারো থিমটি ব্যবহার করে, অভিধানটির নাম Aero.NormalColor.xaml, এক্সপিতে ডিফল্ট থিমটি ব্যবহার করে এটি লুনা.নির্মাল কালার.অ্যাক্যামল। থাইলের অভিধানে যদি শৈলীটি পাওয়া যায় না, তবে এটি Generic.xaml এ দেখায় অর্থাত্ নিয়ন্ত্রণের জন্য যার চেহারা থিমের উপর নির্ভর করে না।

এটি কেবল আপনার সংজ্ঞায়িত যেকোন কাস্টম নিয়ন্ত্রণের ক্ষেত্রেই প্রযোজ্য অর্থাৎ সরাসরি বা অপ্রত্যক্ষভাবে নিয়ন্ত্রণ থেকে প্রাপ্ত ক্লাসগুলি। আপনি স্ট্যান্ডিক DefaultStyleKeyProperty.OverrideMetadataকন্সট্রাক্টর থেকে ডেকে স্ট্যান্ডার্ড কন্ট্রোলের জন্য ডিফল্ট স্টাইল পরিবর্তন করতে পারেন , তবে আপনাকে তারপরে কন্ট্রোলটেম্পলেট সহ পুরো স্টাইল সরবরাহ করতে হবে।

নোট করুন যে আপনি ডাব্লুপিএফকে থিমআইএনফো বৈশিষ্ট্যটি ব্যবহার করে আপনার ডিফল্ট শৈলীর জন্য একটি বাহ্যিক সমাবেশ দেখতে বলেছেন। বাহ্যিক <সমাবেশটি আপনার নামকরণ করা আবশ্যক ><থিমনাম >.dll উদাহরণস্বরূপ PresenntationFramework.Aero.dll ।


ধন্যবাদ, ফিল সুতরাং আপনি কি বলছেন যে আমি যদি কেবলমাত্র একটি সাধারণ বাটন নিয়ন্ত্রণের জন্য একটি নতুন কন্ট্রোলটিম্পলেট সরবরাহ করতে চাইতাম (অর্থাত্, বাটন থেকে উদ্ভূত হওয়া আমার নিজস্ব বিশেষ শ্রেণিটি না লিখি), তবে এটি কোনও "থিম" এর অংশ হিসাবে বিবেচিত হবে না?
ডেভুসার

হ্যাঁ, আপনি যদি কেবল স্ট্যান্ডার্ড নিয়ন্ত্রণটিকে পুনরায় টেম্পলেট করতে বা পুনরায় স্টাইল করতে চান তবে আপনি ব্যবহারকারীর নিয়ন্ত্রণ / উইন্ডো / অ্যাপ্লিকেশন / যে কোনও স্তরের সাধারণ সংস্থানসমূহ ব্যবহার করুন element নির্দিষ্ট প্রকারের সমস্ত নিয়ন্ত্রণ পরিবর্তন করতে আপনি একটি অন্তর্নিহিত কী ( এমএসডিএন.মাইক্রোসফটকম / en-us / library/… ) সহ একটি স্টাইল ব্যবহার করতে পারেন ।
ফিল দেওয়ানি

@ জায়েলু এটি এখন কাজ করছে (আমার মনে হয় এমএস তাদের ডক্স আপডেট করেছে)
অ্যালান ম্যাকবি - এমএসএফটি

104

একটি generic.xamlফাইল (ক্ষেত্রে সংবেদনশীল) কিছু বিশেষ হওয়ার জন্য দুটি শর্ত পূরণ করতে হবে:

  • এটি অবশ্যই প্রকল্পের থিমস সাব-রুট ফোল্ডারে থাকতে হবে
  • সমাবেশটি অবশ্যই ThemeInfoAttribute(সাধারণত AssemblyInfo.cs) এর সাথে চিহ্নিত করতে হবে

তারপরে আপনি আপনার নিয়ন্ত্রণগুলিতে প্রয়োগ করতে চান এমন কোনও ডিফল্ট শৈলীর জন্য এটি ডিফল্ট চেহারা হিসাবে কাজ করে। এটিকেও লক্ষ্য করুন যে কোনও শৈলীর ডিফল্ট হওয়ার জন্য এটির টার্গেটটাইপ এবং এক্স: কী উভয়ই নিয়ন্ত্রণের ধরণ হিসাবে ঘোষণা করা উচিত যা স্টাইল করতে হবে।

যদি আপনি আপনার অ্যাপ্লিকেশনটিতে পুরো থিম এবং থিম পরিবর্তন করতে চান যা কিছু কোডিংয়ের সাথে সম্পন্ন হয় তবে এই কৌশলটি কেবলমাত্র ডিফল্ট সংস্থান অভিধানটি সংজ্ঞায়িত করে।


3
আপনি কি "ডিফল্ট শৈলী" বলতে চাইছেন তা পরিষ্কার করে বলতে পারেন? এর অর্থ কি এই যে সমস্ত বোতাম স্বয়ংক্রিয়ভাবে এমন স্টাইলে নেবে যার টার্গেটটাইপটি "বোতাম"? বা x:Keyলেখার পরেও কি আমার রেফারেন্সটি দরকার <Button Style="{StaticResource MyButtonStyle}" />? রিসোর্স অভিধানে যদি একাধিক স্টাইল থাকে যার টার্গেটটাইপটি "বোতাম"? ধন্যবাদ।
ডিভাক্সার

3
এই সম্পর্কে আমার মাথা পেতে সাহায্য করার জন্য অন্য একটি প্রশ্ন: জেনেরিক.এক্স্যামেল কি সিএসএস ফাইলের সমতুল্য ডাব্লুপিএফ সমতুল্য যা বিভিন্ন উপাদানগুলির ডিফল্ট বর্ণনকে সংজ্ঞায়িত করে, যেমন h1 {color:#00ff00}?
ডিভাক্সার

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

3
কেবল এটি যুক্ত করতে চেয়েছিলেন, যদিও সত্য যে জেনেরিক.এক্সএএমএল ফাইলের উপর নিজেই বিশেষ বিধিনিষেধ রয়েছে, জেনেরিক.এক্সএএমএল-এর মধ্যে অভিধান এন্ট্রি একটি মার্জড ডিকশনারি হতে পারে যার প্রবেশদ্বারগুলি যে কোনও বিষয়কে রেফারেন্স করতে পারে।
টর্মোড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.