ডাব্লুপিএফ-তে, এক্স: নাম এবং নাম বৈশিষ্ট্যের মধ্যে পার্থক্য কী?


573

শিরোনাম এটি সব বলছে। কখনও কখনও মনে হয় Nameএবং x:Nameবৈশিষ্ট্যগুলি বিনিময়যোগ্য।

সুতরাং, তাদের মধ্যে সুনির্দিষ্ট পার্থক্যগুলি কী এবং যখন একে অপরের উপরে ব্যবহার করা ভাল?

এগুলি ভুল উপায়ে ব্যবহার করার জন্য কোনও কার্য সম্পাদন বা স্মৃতিশক্তি রয়েছে?


প্রতিক্রিয়াগুলি বোঝায় যে x:Nameসমস্ত সময় ব্যবহার করা ভাল কাজ করে। আমাকে কেবল এটিকে পরিবর্তন করতে হবে Nameঅন্যথায় আমি আমার .xaml.cs কোডের নিয়ন্ত্রণটি উল্লেখ করতে পারি না তাই আমি ধরে নিতে চলেছি যে এটি এখন আর সবসময় ঠিকঠাক কাজ করে না।
অর্টান্ড

1
আপনার রোলব্যাক সম্পর্কে, "শিরোনামটি সব বলে" এই বাক্যটি দিয়ে কী অতিরিক্ত অর্থ বোঝানো হয়েছে? এটা কি অপ্রয়োজনীয় নয়? (সম্পাদনা করার জন্য আমার কারণ হ'ল আমি কথোপকথন ফিলার বাক্যাংশগুলিকে নিরুৎসাহিত করি - এটি "আপনি যদি আমাকে সহায়তা করতে পারেন তবে আমি ভাবছি" এর চেয়ে বেশি তথ্যবহুল বিষয় নয়))।
অর্ধ

উত্তর:


481

সত্যিই, XAML একমাত্র নাম x:Name। ডাব্লুপিএফ এর মতো একটি কাঠামো এক্সএএমএল এর এক্স বৈশিষ্ট্য: এক্স বৈশিষ্ট্যের সাথে ম্যাপিংয়ের জন্য শ্রেণীর বৈশিষ্ট্যগুলির মধ্যে একটি নির্ধারণ করে যা ক্লাস অন x:Nameব্যবহার করে XAML এর কাছে তার বৈশিষ্ট্যগুলির RuntimeNamePropertyAttributeএকটিতে মানচিত্র তৈরি করতে পারে।

এটি করার কারণটি হ'ল ফ্রেমওয়ার্কগুলির জন্য অনুমতি দেওয়া ছিল যা ডাব্লুপিএফের মতো রানটাইমটিতে ইতিমধ্যে "নাম" ধারণা রয়েছে। উদাহরণস্বরূপ, ডাব্লুপিএফ FrameworkElementএকটি নাম সম্পত্তি পরিচয় করিয়ে দেয়।

সাধারণভাবে, কোনও শ্রেণীর নাম ব্যবহারের x:Nameযোগ্য হওয়ার জন্য সংরক্ষণ করার প্রয়োজন হয় না । x:Nameএক্সএএমএল-এর সমস্ত মাধ্যমটি ক্লাসের পিছনে কোডে মান সঞ্চয় করার জন্য একটি ক্ষেত্র তৈরি করে। রানটাইম যে ম্যাপিংয়ের সাহায্য করে তা ফ্রেমওয়ার্ক নির্ভর।

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

ভবিষ্যতে, এক্সএএমএল এর x: নামের আরও ব্যবহার থাকবে যেমন যেমন নাম অনুসারে অন্যান্য বস্তুর উল্লেখ করে আপনাকে সম্পত্তি সেট করার অনুমতি দেয় তবে 3.5 এবং এর পূর্বে এটি কেবল ক্ষেত্র তৈরি করতে ব্যবহৃত হয়।

আপনার একটি বা অন্যটি ব্যবহার করা উচিত কিনা তা আসলেই একটি শৈলীর প্রশ্ন, কোনও প্রযুক্তিগত নয়। আমি এটি অন্যের কাছে একটি সুপারিশের জন্য রেখে দেব।

অটোমেশনপ্রোপার্টিগুলিও দেখুন N নাম ভিএস এক্স: নাম , অটোমেশনপ্রোপার্টি.নাম অ্যাক্সেসিবিলিটি সরঞ্জাম এবং কিছু পরীক্ষার সরঞ্জাম দ্বারা ব্যবহৃত হয়।


2
ভিজ্যুয়াল স্টুডিও ২০১০ সালে আপনি ডিজাইনারের মাধ্যমে এক্সএএমএল সম্পাদনা করার সময় নাম বৈশিষ্ট্য সেট করা হয় (x নয়: নাম)। এমএস এম নেম ওভার এক্স: নাম ব্যবহারের জন্য উত্সাহিত করে বলে মনে হয় তাই আমি অনুমান করি যে এটি ডিফাক্টো স্ট্যান্ডার্ড।
নীহারিকা

11
আমি মনে করি না যে দুটোই সাধারণভাবে বিনিময়যোগ্য। নামকরণ ব্যবহারকারীদের নিয়ন্ত্রণের প্রয়োজন x:Nameকারণ Nameকোড-পিছনে স্বীকৃতি পাওয়ার জন্য কোনও ক্ষেত্র তৈরি করবে না। যদিও এখনও হয় না কেন আমি জানি না।
Libor

5
তারা ছিল না বা বোঝাতে চাইছিল না they ডাব্লুপিএফ-তে, কোনও উপাদানের যদি কোনও Nameসম্পত্তি থাকে তবে তারা একই জিনিস বোঝায়। যদি উপাদানটির কোনও Nameসম্পত্তি না থাকে তবে আপনাকে অবশ্যই ব্যবহার করতে হবে x:Name
চকজ

90

এগুলো এক জিনিস না.

x:Nameএকটি এক্সএএমএল ধারণা, মূলত উপাদানগুলির রেফারেন্স হিসাবে ব্যবহৃত হয়। আপনি যখন কোনও উপাদানকে x: নাম xaml অ্যাট্রিবিউট দেন, "নির্দিষ্ট করা x:Nameক্ষেত্রের নাম হয়ে যায় যা xaml প্রসেস করার সময় অন্তর্নিহিত কোডে তৈরি হয় এবং সেই ক্ষেত্রটি অবজেক্টের রেফারেন্স ধারণ করে।" ( এমএসডিএন ) সুতরাং এটি একটি ডিজাইনার-উত্পাদিত ক্ষেত্র, এটির ডিফল্টরূপে অভ্যন্তরীণ অ্যাক্সেস রয়েছে।

NameFrameworkElementএক্স এর বিদ্যমান স্ট্রিং প্রপার্টি, কোনও এক্সএএমএল অ্যাট্রিবিউট আকারে অন্য wpf উপাদান বৈশিষ্ট্য হিসাবে তালিকাভুক্ত।

ফলস্বরূপ, এর অর্থ হ'ল x:Nameবিস্তৃত অবজেক্টগুলিতে ব্যবহার করা যেতে পারে। এটি xaml এর যে কোনও কিছুকে প্রদত্ত নামের সাথে রেফারেন্স করতে সক্ষম করার একটি কৌশল।


6
তাহলে নাম বা এক্স: নামটি কেন বাইন্ডিংয়ের সাথে ব্যবহার করা যেতে পারে? এলিমেটনেম? দেখে মনে হচ্ছে যে এক্স: নাম বৈশিষ্ট্যটি কেবল উত্পন্ন কোডে কোনও ক্ষেত্রের নামকরণের জন্য ব্যবহৃত হয় না, তবে এটি রানটাইমে মেটাডেটাতেও উপলব্ধ।
ড্রয় নোকস

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

39

x: নাম এবং নাম পৃথক নেমস্পেসগুলি উল্লেখ করছে।

x: নামটি Xaml ফাইলের শীর্ষে ডিফল্ট দ্বারা নির্ধারিত x নেমস্পেসের একটি উল্লেখ।

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

কেবল নামটি নীচের ডিফল্টরূপে নেমস্পেস ব্যবহার করে saying

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

X: নাম ব্যবহার বলছে নামস্থান আছে এক্স ওরফে। এক্স হ'ল ডিফল্ট এবং বেশিরভাগ লোকেরা এটি ছেড়ে দেয় তবে আপনি যা পছন্দ করেন তা পরিবর্তন করতে পারেন

xmlns:foo="http://schemas.microsoft.com/winfx/2006/xaml"

আপনার রেফারেন্স foo হবে: নাম

ডাব্লুপিএফ-এ नेमস্পেসগুলি সংজ্ঞায়িত করুন এবং ব্যবহার করুন


ঠিক আছে এটি অন্যভাবে দেখুন। বলুন যে আপনি আপনার Xaml পৃষ্ঠাতে একটি বোতাম টেনে আনুন এবং ছেড়ে দিন। আপনি এই 2 টি উপায় উল্লেখ করতে পারেন x: নাম এবং নাম । সমস্ত xMLns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" এবং xMLns: x = "http://schemas.microsoft.com/winfx/2006/xaml" একাধিক নেমস্পেসের উল্লেখ । যেহেতু xaml ঝুলিতে কন্ট্রোল নামস্থান (যে না 100%) এবং উপস্থাপনা ঝুলিতে FrameworkElement এবং বাটন বর্গ একটি উত্তরাধিকার প্যাটার্ন আছে:

Button : ButtonBase
ButtonBase : ContentControl, ICommandSource
ContentControl : Control, IAddChild
Control : FrameworkElement
FrameworkElement : UIElement, IFrameworkInputElement, 
                    IInputElement, ISupportInitialize, IHaveResources

সুতরাং যেহেতু ফ্রেমওয়ার্ক এলিমেন্ট থেকে উত্তরাধিকার সূত্রে প্রাপ্ত এমন কিছু প্রত্যাশার সাথে এর সমস্ত সর্বজনীন বৈশিষ্ট্যে অ্যাক্সেস থাকবে। সুতরাং বাটনের ক্ষেত্রে এটি ফ্রেমওয়ার্ক এলিমেন্ট থেকে হায়ারার্কি গাছের একেবারে শীর্ষে তার নাম বৈশিষ্ট্যটি পাচ্ছে। সুতরাং আপনি x: নাম বা নাম বলতে পারেন এবং তারা উভয়ই ফ্রেমওয়ার্কএলমেন্ট থেকে প্রাপ্তকারী / সেটটার অ্যাক্সেস করবে।

এমএসডিএন রেফারেন্স

ডাব্লুপিএফ একটি সিএলআর অ্যাট্রিবিউট সংজ্ঞায়িত করে যা এক্সএএমএল প্রসেসর দ্বারা গ্রাস করা হয় যা একক এক্সএমএল নেমস্পেসে একাধিক সিএলআর নেমস্পেসগুলি ম্যাপ করতে পারে AM XmlnsDefinitionAttribute অ্যাট্রিবিউট সোর্স কোড যে সমাবেশ উৎপন্ন মধ্যে সমাবেশ পর্যায়ে স্থাপন করা হয়। ডাব্লুপিএফ অ্যাসেম্বলি উত্স কোডটি এই বৈশিষ্ট্যটি বিভিন্ন সাধারণ নেমস্পেসগুলি যেমন সিস্টেম. উইন্ডো এবং সিস্টেম. উইন্ডোস.কন্ট্রোলগুলিতে, http://schemas.microsoft.com/winfx/2006/xaml/presenation নেমস্পেসে ম্যাপ করার জন্য ব্যবহার করে।

সুতরাং অ্যাসেম্বলির বৈশিষ্ট্যগুলি এমন কিছু দেখবে:

উপস্থাপনা ফ্রেমওয়ার্ক.ডিল - এক্সএমএনএলস ডেফিনিশনঅ্যাট্রিবিউট:

[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows")]

[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Data")]

[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Navigation")]

[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Shapes")]

[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Documents")]

[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Controls")]  

1
আমি এটা সত্য যে মনে করি না http://schemas.microsoft.com/winfx/2006/xamlঝুলিতে Control: যেহেতু আপনি একটি 'X নামস্থান ছাড়া XAML সরাসরি এটি ব্যবহার করতে পারেন<Control />
ড্রিউ Noakes

23

এগুলি উভয়ই একই জিনিস, কাঠামোগত উপাদানগুলি একটি নাম সম্পত্তি নিজেরাই প্রকাশ করে, তবে আপনি x: নাম ব্যবহার করতে পারবেন না তাদের ক্ষেত্রে - আমি সাধারণত x: নামের সাথে আটকে থাকি কারণ এটি সমস্ত কিছুর জন্য কাজ করে।

নিয়ন্ত্রণগুলি তারা চাইলে একটি নির্ভরতা সম্পত্তি হিসাবে তাদের নাম প্রকাশ করতে পারে (কারণ তাদের অভ্যন্তরীণভাবে সেই নির্ভরতা সম্পত্তিটি ব্যবহার করা দরকার), বা তারা তা না বেছে নিতে পারে।

এমএসডিএন-তে আরও বিশদ এখানে এবং এখানে :

কিছু ডাব্লুপিএফ ফ্রেমওয়ার্ক-স্তরের অ্যাপ্লিকেশনগুলি x এর কোনও ব্যবহার এড়াতে সক্ষম হতে পারে: নাম বৈশিষ্ট্য, কারণ ফ্রেমওয়ার্কএলমেন্ট / ফ্রেমওয়ার্কসন্টেন্টিমেন্টের মতো কয়েকটি গুরুত্বপূর্ণ বেস শ্রেণীর জন্য ডাব্লুপিএফ নেমস্পেসের মধ্যে উল্লিখিত নাম নির্ভরতা সম্পত্তি এই একই উদ্দেশ্যে সন্তুষ্ট করে। এখনও কিছু সাধারণ এক্সএএমএল এবং কাঠামোর দৃশ্যাবলী রয়েছে যেখানে কোনও নামের সম্পত্তি নেই এমন একটি উপাদানটিতে কোড অ্যাক্সেস প্রয়োজনীয়, বিশেষত নির্দিষ্ট অ্যানিমেশন এবং স্টোরিবোর্ড সমর্থন শ্রেণিতে। উদাহরণস্বরূপ, আপনার কোড থেকে রেফারেন্স করতে ইচ্ছুক হলে আপনাকে এক্স: এক্সএএমএল-তে তৈরি টাইমলাইন এবং রূপান্তরগুলির নাম উল্লেখ করতে হবে।

ক্লাসে নাম হিসাবে সম্পত্তি হিসাবে উপলভ্য থাকলে নাম এবং এক্স: নামটি আলাদা আলাদাভাবে বৈশিষ্ট্য হিসাবে ব্যবহার করা যেতে পারে, তবে উভয়টি একই উপাদানটিতে নির্দিষ্ট করা থাকলে একটি ত্রুটি ঘটবে।


4
যদি কোনও পার্থক্য না থাকে, তবে কেন একই জিনিসটি করার দুটি উপায় থাকবে? ডাব্লুপিএফের প্রথম প্রকাশে দুটি উপায়ই বিদ্যমান ছিল।
ড্রয় নোকস

@ স্টিভ, আমি এই প্রশ্নের উত্তরগুলির কোনওটিকেই হ্রাস করি নি, যদিও এখনও পর্যন্ত তাদের কোনওটিরই খুব উপযুক্ত হয়নি।
ড্রয় নোকস

আমি দেখতে পাচ্ছি না যে কীভাবে একটি উত্তর যা আপনাকে কেবল উত্তর দেয় না, তবে আপনাকে এই বিষয়ে আরও তথ্যের জন্য এমএসডিএন-এর লিঙ্কগুলিও দেয় কি উপযুক্ত না? :-)
স্টিভেন রবিন্স

5
@ আপনার মূল উত্তরটি আমার প্রশ্নের সমাধান করে না, তাই আমার মন্তব্য। আমি অন্ধ-বিশ্বাসের জন্য "এইভাবে এটি করুন" খুঁজছি না, বরং একটি অন্তর্দৃষ্টিপূর্ণ উত্তর যা ব্যাখ্যা করে যে কেন দুটি উপায় বিদ্যমান, যদিও তাদের মধ্যে একটি সারাক্ষণ কাজ করে। প্রযুক্তিগতভাবে সঠিক! = উপযুক্ত। আপনার আপডেটটি আরও ভাল।
ড্রয় নোকস

1
এখানে বেশিরভাগ একই উত্তর: wpfwiki.com/WPF%20Q16.4.ashx এক্স: নামটি কোড-পিছনে ব্যবহার করতে নিয়ন্ত্রণটিকে একটি নাম দিচ্ছে। কিছু শ্রেণি একই উদ্দেশ্যে একটি নাম-সম্পত্তি সরবরাহ করবে। এই ক্লাসগুলির জন্য, x: নাম এবং নামের মধ্যে কোনও পার্থক্য নেই।
ভেগার

11

এক্স: আপনার যদি কাস্টম নিয়ন্ত্রণ থাকে তবে নাম মেমরির সমস্যার কারণ হতে পারে। এটি নেমস্কোপ প্রবেশের জন্য একটি স্মৃতি অবস্থান রাখবে।

আমি বলি কখনই x ব্যবহার করবেন না: নাম না রাখলে আপনার দরকার নেই।


একমত। একটি কিওস্ক অ্যাপ্লিকেশনটিতে কাজ করা হয়েছিল যার মধ্যে অসংখ্য মেমরি ফাঁস ছিল এবং পূর্বের দেব দলের রেজুলেশন কেবল একটি রিবুট করার জন্য হয়েছিল। বেশিরভাগ ফাঁস সহজেই চিহ্নিত করা হয়েছিল। তবুও, ইন্টেলিট্রেস এবং জাস্টট্রেসের মাধ্যমে পাওয়া এগুলি ঠিক করার পরে, কিছু রেফগুলি এখনও অন্তর্নিহিত এবং সুস্পষ্ট আবর্জনা সংগ্রহকে বাদ দেয়। আমি পড়েছি: সমর্থন.scichart.com/index.php?/News/NewsItem/View/21/… পাওয়া গেছে যে x: নামটিকে আরও উন্নত কর্মক্ষমতা বলে।
MachinusX

2
এটি আমার বোঝার ফলে এটি নাম এবং এক্স উভয়কেই প্রভাবিত করে : নাম উভয়ই নামস্কোপে যুক্ত করা হয়েছে। আপনার উপাদানটিতে যদি কোনও নামের প্রয়োজন হয় তবে এটির কাছাকাছি কোনও কিছুই নেই। আপনি কোনও নাম দিয়ে কোনও উপাদানটিতে কোডে তিরস্কার করতে পারেন FrameworkElement.RegisterName("elementname")। তবে, আপনি যদি কল করেন তবে FrameworkElement.UnregisterName("elementname")এটি "dereferencesd" হতে পারে।
অ্যাডাম ক্যাভনেস

8

নাম :

  1. কেবলমাত্র ফ্রেমওয়ার্কএলমেন্ট এবং ফ্রেমওয়ার্কসন্টেন্টমেন্টের বংশধরের জন্য ব্যবহার করা যেতে পারে;
  2. কোড-পেছন থেকে সেটওয়ালু () এবং সম্পত্তি-মত মাধ্যমে সেট করা যেতে পারে।

এক্স: নাম :

  1. প্রায় সমস্ত এক্সএএমএল উপাদানগুলির জন্য ব্যবহার করা যেতে পারে;
  2. সেটভ্যালু () এর মাধ্যমে কোড-পেছন থেকে সেট করা যায় না; এটি কেবলমাত্র বস্তুগুলিতে অ্যাট্রিবিউট সিনট্যাক্স ব্যবহার করে সেট করা যেতে পারে কারণ এটি একটি নির্দেশিকা।

এক্সএএমএলএল উভয় নির্দেশকে একটি ফ্রেমওয়ার্ক এলিমেন্ট বা ফ্রেমওয়ার্ক কনটেন্টেলমেন্ট ব্যবহার করার ফলে একটি ব্যতিক্রম ঘটতে পারে: এক্সএএমএল যদি মার্কআপ সংকলিত হয় তবে ব্যতিক্রমটি মার্কআপ সংকলনে উপস্থিত হবে, অন্যথায় এটি লোডে ঘটে।


7

পার্থক্যটি হ'ল যদি আপনি একই নিয়ন্ত্রণকারীর মধ্যে নিয়ন্ত্রণ ব্যবহারকারীর নিয়ন্ত্রণ ব্যবহার করেন তবে নামটি আপনার নিয়ন্ত্রণ চিহ্নিত করবে না এবং আপনি "একই সমাবেশে নিয়ন্ত্রণের জন্য x: নাম ব্যবহার করুন" একটি ত্রুটি পাবেন। সুতরাং x: নামটি ডাব্লুপিএফ-র নামকরণের নিয়ন্ত্রণের ডাব্লুপিএফ সংস্করণ। নামটি একটি উইনফর্ম উত্তরাধিকার হিসাবে সবেমাত্র ব্যবহৃত হয়। তারা ডাব্লুপিএফ এবং উইনফর্মগুলিতে নিয়ন্ত্রণের নামকরণের পার্থক্য করতে চেয়েছিল কারণ তারা Xaml এ অ্যাট্রিবিউটগুলি ব্যবহার করে অন্যান্য অ্যাসেমব্লিগুলি থেকে নিয়ন্ত্রণগুলি সনাক্ত করতে: x নাম নিয়ন্ত্রণের জন্য।

কেবল মনে রাখবেন যে এটি নিয়ন্ত্রণের জন্য কোনও নাম রাখার প্রয়োজন নেই কারণ এটি শূন্য হিসাবে স্মৃতিতে থাকে এবং এটি আপনাকে একটি সতর্কতা দেয় যে নামটি কখনও ব্যবহার না করা নিয়ন্ত্রণের জন্য প্রয়োগ করা হয়েছে।


7

x:Name মানে: এই অবজেক্টের রেফারেন্স ধরে রাখতে কোডের পিছনে একটি ক্ষেত্র তৈরি করুন।

Name অর্থ: এই বস্তুর নাম বৈশিষ্ট্য সেট করুন।


এটি মোটেও সত্য নয়; এগুলি উভয়ই কোডবিহাইড থেকে অ্যাক্সেসযোগ্য তবে আকর্ষণীয়ভাবে কেবলমাত্র x: রানটাইমটিতে নাম আপডেট করা যেতে পারে। বাদামে পূর্ণ।

4

আমি সর্বদা এক্স: নাম বৈকল্পিক ব্যবহার করি। এটি কোনও কার্য সম্পাদনকে প্রভাবিত করে কিনা আমার কোনও ধারণা নেই, আমি নিম্নলিখিত কারণে এটি আরও সহজ। যদি আপনার নিজস্ব ব্যবহারকারী নিয়ন্ত্রণ রয়েছে যা অন্য সমাবেশে থাকে কেবলমাত্র "নাম" বৈশিষ্ট্যটি সর্বদা যথেষ্ট হবে না। এটি কেবল x: নামের সম্পত্তিকে আটকে রাখা সহজ করে তোলে।


4
যদি কোনও পার্থক্য না থাকে, তবে কেন একই জিনিসটি করার দুটি উপায় থাকবে? ডাব্লুপিএফের প্রথম প্রকাশে দুটি উপায়ই বিদ্যমান ছিল।
ড্রয় নোকস

3

এটি কোনও ডাব্লুপিএফ আইটেম নয় বরং একটি স্ট্যান্ডার্ড এক্সএমএল এবং বিটিবিএইচ এর সঠিক উত্তর দিয়েছে, এক্সটি ডিফল্ট নেমস্পেসকে বোঝায়। এক্সএমএলে আপনি যখন কোনও নাম / স্থানের সাথে কোনও উপাদান / গুণকে উপসর্গ করেন না তখন ধরে নেওয়া হয় যে আপনি ডিফল্ট নেমস্পেস চান want সুতরাং শুধু টাইপ Nameকরা সংক্ষিপ্ত হাত ছাড়া আর কিছু নয় x:Name। এক্সএমএল নেমস্পেসে আরও বিশদ বিবরণ লিঙ্ক পাঠ্যে পাওয়া যাবে


-১ এক্স-তে প্রলুব্ধ করে একটি ভিন্ন এক্সএমএল নেমস্পেসকে বোঝায়, সত্য, তবে এটি আসলে প্রশ্নটির কোনও কার্যকর উত্তর নয় যা কখন আপনার অন্য কোনওটি ব্যবহার করার প্রয়োজন হয় না। : /
টিম লাভল-স্মিথ

2

উত্তরগুলির মধ্যে একটি হ'ল x: নামটি বিভিন্ন প্রোগ্রামের ভাষার মধ্যে যেমন সি # এবং নাম কাঠামোর জন্য ব্যবহার করতে হয় used সত্যিই এটি আমার কাছে মনে হচ্ছে।


2

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

এমএসডিএন সম্পর্কে আরও পড়ুন ...


2

আপনি যখন এক্সএএমএল-তে একটি বাটন উপাদান ঘোষণা করেন আপনি উইন্ডোজ রান টাইমে সংজ্ঞায়িত একটি শ্রেণীর উল্লেখ করছেন যা বাটন বলে।

বাটনের অনেকগুলি বৈশিষ্ট্য রয়েছে যেমন ব্যাকগ্রাউন্ড, পাঠ্য, মার্জিন, ..... এবং নাম নামে একটি বৈশিষ্ট্য।

এখন আপনি যখন এক্সএএমএল-তে একটি বাটন ঘোষণা করবেন তখন একটি বেনামি বস্তু তৈরির মতো যা নাম নামে একটি বৈশিষ্ট্যযুক্ত হয়েছিল।

সাধারণভাবে আপনি কোনও বেনামে থাকা অবজেক্টকে উল্লেখ করতে পারবেন না, তবে ডাব্লুপিএফ ফ্রেমওয়ার্কে এক্সএএমএল প্রসেসর আপনাকে নাম অ্যাট্রিবিউটকে যে মান দিয়েছিল তার দ্বারা সেই অবজেক্টটি উল্লেখ করতে সক্ষম করে।

এ পর্যন্ত সব ঠিকই.

অবজেক্ট তৈরির অন্য উপায় হ'ল বেনামে অবজেক্টের পরিবর্তে একটি নামকৃত বস্তু তৈরি করা। এক্ষেত্রে এক্সএএমএল নেমস্পেসের নাম নামক কোনও বস্তুর জন্য একটি বৈশিষ্ট্য রয়েছে (এবং এটি যেহেতু এটি এক্সএএমএল নামের জায়গার মধ্যে রয়েছে তাই এক্স :) রয়েছে যা আপনি সেট করতে পারেন যাতে আপনি নিজের অবজেক্টটি সনাক্ত করতে পারেন এবং এটি উল্লেখ করতে পারেন।

উপসংহার:

নাম একটি নির্দিষ্ট বস্তুর বৈশিষ্ট্য, তবে এক্স: নামটি সেই বস্তুর একটি বৈশিষ্ট্য (এখানে একটি শ্রেণি রয়েছে যা একটি সাধারণ বস্তুকে সংজ্ঞায়িত করে)।


0

আমার গবেষণা x:Nameযেমন বিশ্বব্যাপী পরিবর্তনশীল। তবে স্থানীয় পরিবর্তনশীল Nameহিসাবে । এর অর্থ কি x: নাম আপনি এটি আপনার এক্সএএমএল ফাইলের যে কোনও জায়গায় কল করতে পারেন তবে নামটি নেই। উদাহরণ:

<StackPanel>
<TextBlock Text="{Binding Path=Content, ElementName=btn}" />
<Button Content="Example" Name="btn" />
</StackPanel>
<TextBlock Text="{Binding Path=Content, ElementName=btn}" />

তুমি পারবে না Bindingসম্পত্তি Contentএর Buttonনাম দিয়ে কারণ এটি বাহিরে "btn" হয়StackPanel

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